Como gerar scripts de automatização com Microsoft Copilot: passo a passo
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.