(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como gerar scripts de automatização com Microsoft Copilot: passo a passo

João Barros 28 de July de 2026 5 min de leitura

Guardar tempo ao automatizar tarefas repetitivas é uma grande vantagem. Este guia mostra como gerar um script de automatização com o Microsoft Copilot para organizar ficheiros numa pasta com base no tipo e na data, útil para gestão de ficheiros e cópias de segurança.

Pré-requisitos

  • Conta com acesso ao Microsoft Copilot (Copilot integrado no Microsoft 365 ou Copilot para desenvolvedores).
  • Ambiente onde executar scripts: Windows 10/11 com PowerShell ou macOS/Linux com Bash (escolha um).
  • Editor de texto (VS Code recomendado) e permissões para ler/escrever na pasta alvo.
  • Noções básicas de comandos PowerShell ou Bash (nível introdutório).

Passo 1: Definir objectivo claro para o Copilot

Explique ao Copilot exactamente o que pretende: mover ficheiros por tipo (ex.: .pdf, .docx, .jpg) para subpastas com o nome da extensão e, adicionalmente, agrupar por ano de modificação. Um pedido claro evita respostas vagas.

Prompt exemplo:
"Cria um script PowerShell que percorra a pasta C:\Users\MeuUtilizador\Downloads, crie subpastas por extensão (.pdf, .docx, .jpg) e, dentro de cada subpasta, crie subpastas por ano de modificação (ex: 2024). Move os ficheiros correspondentes. Inclui logging simples e tratamento de erros."

Passo 2: Escolher linguagem e pedir versão mínima

Indique a linguagem que vai usar (PowerShell para Windows, Bash para macOS/Linux) e peça uma versão mínima, para compatibilidade. Isto evita comandos incompatíveis.

Prompt exemplo para PowerShell:
"Gerar um script PowerShell compatível com PowerShell 7+.
- Input: caminho da pasta como variável $SourcePath.
- Criar subpastas por extensão e por ano de modificação.
- Fazer log em ficheiro move-log.txt.
- Incluir verificação de existência de ficheiro e tratamento de erros."

Passo 3: Pedir melhorias iterativas e explicar o porquê

Quando o Copilot gerar um primeiro rascunho, peça melhorias: desempenho (usar Get-ChildItem com -File), segurança (evitar sobrescrita) e mensagens de progresso. Explique porque quer cada alteração para obter código mais alinhado com o seu cenário.

Prompt de iteração:
"Optimiza para performance e evita sobrescrever ficheiros existentes (se existir, acrescenta um sufixo com contador). Adiciona Write-Progress para visibilidade."

Passo 4: Testar o script gerado num ambiente controlado

Antes de executar na pasta real, crie uma pasta de testes com alguns ficheiros de exemplo. Execute o script em modo 'dry-run' se o Copilot incluir essa opção, ou acrescente uma variável $WhatIf para simular movimentos.

# Exemplo mínimo PowerShell para dry-run
$SourcePath = "C:\Temp\TestFiles"
$WhatIf = $true  # definir a $false para executar

# O script principal deve respeitar $WhatIf e usar -WhatIf onde aplicável

Passo 5: Rever segurança e permissões

Verifique que o script não executa comandos com privilégios elevados sem necessidade e que usa caminhos absolutos validados. Peça ao Copilot que acrescente validação de caminho e logging de erros com try/catch.

Prompt para validação:
"Acrescenta validação: confirma que $SourcePath existe e é uma pasta. Em caso de erro, grava no log e sai com código de erro 1."

Passo 6: Exemplo final (PowerShell funcional)

Aqui está um exemplo mínimo e funcional que pode usar e adaptar. Substitua o caminho pelo que pretende.

# Script PowerShell exemplo (PowerShell 7+)
param(
    [string]$SourcePath = "C:\Users\MeuUtilizador\Downloads",
    [switch]$WhatIf
)

$LogPath = Join-Path -Path $SourcePath -ChildPath "move-log.txt"

if (-not (Test-Path -Path $SourcePath -PathType Container)) {
    "[$(Get-Date)] Erro: Pasta não encontrada: $SourcePath" | Out-File -FilePath $LogPath -Append
    exit 1
}

Get-ChildItem -Path $SourcePath -File -Recurse | ForEach-Object -Begin { $i = 0 } -Process {
    $i++
    $ext = ($_.Extension -replace '^\.', '').ToLower()
    if ([string]::IsNullOrEmpty($ext)) { $ext = 'noext' }
    $year = $_.LastWriteTime.Year

    $destFolder = Join-Path -Path $SourcePath -ChildPath (Join-Path -Path $ext -ChildPath $year)
    if (-not (Test-Path -Path $destFolder)) { New-Item -Path $destFolder -ItemType Directory | Out-Null }

    $destPath = Join-Path -Path $destFolder -ChildPath $_.Name

    # Evitar sobrescrita: acrescentar sufixo se existir
    $count = 0
    $baseName = [System.IO.Path]::GetFileNameWithoutExtension($destPath)
    $extension = [System.IO.Path]::GetExtension($destPath)
    while (Test-Path -Path $destPath) {
        $count++
        $destPath = Join-Path -Path $destFolder -ChildPath ("{0}({1}){2}" -f $baseName, $count, $extension)
    }

    if ($WhatIf) {
        "WhatIf: Mover '$($_.FullName)' para '$destPath'" | Out-File -FilePath $LogPath -Append
    } else {
        try {
            Move-Item -Path $_.FullName -Destination $destPath -ErrorAction Stop
            "[$(Get-Date)] Moveu: '$($_.FullName)' -> '$destPath'" | Out-File -FilePath $LogPath -Append
        } catch {
            "[$(Get-Date)] Erro ao mover '$($_.FullName)': $_" | Out-File -FilePath $LogPath -Append
        }
    }
}

"[$(Get-Date)] Concluído. Processados: $i ficheiros." | Out-File -FilePath $LogPath -Append

Verificar o resultado

Confirme que a estrutura de pastas foi criada (por tipo e ano) e que os ficheiros foram movidos sem perda. Abra o ficheiro move-log.txt para consultar o histórico de operações e erros. Se usou $WhatIf primeiro, verifique apenas as entradas 'WhatIf'.

Conclusão

Usar o Microsoft Copilot para gerar scripts acelera o desenvolvimento e reduz erros manuais. Como próximo passo, experimente adaptar o script para filtros (por tamanho, por data) ou integrar com o Power Automate para acionamento automático. Dica: mantenha sempre uma cópia de teste antes de executar scripts em dados reais.