Articles

Test if a File Exists with Powershell

Outro post para mim que é simples e espero que sirva de exemplo para as pessoas que tentam obter blogs como#SQLNewBloggers.

Antes de voltar escrevi um script PowerShell (PoSh) para descarregar os ficheiros XML do SQL Saturday usados para a aplicação do Guidebook. Estes contêm um monte de informação que eu queria recolher, transformar, e manter por aí.

No entanto o script não era grande coisa. Basicamente, fazia looping um número definido de vezes e voltava a descarregar os ficheiros. Não é a solução mais eficiente, especialmente se eu quiser que isto funcione regularmente.

Uma das melhorias que eu queria fazer era verificar se o ficheiro existe, e se não existir, então descarrega-lo. No entanto, se ele existir, então saltarei o ficheiro. Sei que isto significa que não recebo ficheiros actualizados se os horários mudarem, o que é possível, mas nesse caso, posso simplesmente apagar o ficheiro do meu ambiente de trabalho e ir a partir daí.

Fiz uma pesquisa rápida, e encontrei alguns links para o Test-Path cmdlet. Essencialmente, damos-lhe um caminho de ficheiro e este retorna verdadeiro ou falso. Quase exactamente o que eu preciso. Isto é o que adicionei ao meu código:

if (Test-Path $DestinationFile) {

#do something

}

p> No entanto, quero tomar medidas se o ficheiro não existir. Na maioria das línguas, eu adicionaria um ! na frente para significar “não”. Contudo, isso não funciona em PoSh, tal como > não significa maior do que.

Outra pesquisa mostrou-me o operador -NÃO. É disso que eu preciso, mas não posso fazer isto:

se (-NOT Test-Path $DestinationFile) {

#do something

}

p> Em vez disso, preciso de ter uma única expressão para -NOT, o que significa mais parênteses. Não é nada de mais. Utilizei este código:

se (-NOT (Test-Path $DestinationFile)) {

#do something

}

p> Isso funcionou bem e agora só descarrego os ficheiros de que preciso. Se eu quiser voltar a descarregar (para eventos mais recentes), basta apagar esses ficheiros e voltar a executar o script.

SQLNewBlogger

Este post surgiu quando comecei a trabalhar no script. Na verdade, demorou mais tempo a escrever isto do que a encontrar a solução, adicioná-la ao código, e testá-la. Esse processo demorou cerca de 5 minutos.

Este post demorou cerca de 10 minutos a escrever. Também tive um segundo post baseado em modificações semelhantes ao script, por isso fiz isso em mais 5 minutos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *