Articles

Test if a File Exists with Powershell

Kolejny post dla mnie, który jest prosty i mam nadzieję, że posłuży jako przykład dla ludzi próbujących rozpocząć blogowanie jako#SQLNewBloggers.

W międzyczasie napisałem skrypt PowerShell (PoSh) aby pobrać pliki XML z SQL Saturday używane w aplikacji Guidebook. Zawierają one wiele informacji, które chciałem zebrać, przekształcić i zachować.

Jednakże skrypt nie był najlepszy. W zasadzie zapętlał się określoną ilość razy i ponownie pobierał pliki. Nie jest to najbardziej efektywne rozwiązanie, zwłaszcza jeśli chcę, aby działało to regularnie.

Jednym z ulepszeń, które chciałem wprowadzić było sprawdzenie, czy plik istnieje, a jeśli nie, to pobranie go. Jeśli jednak istnieje, to pominę ten plik. Wiem, że to oznacza, że nie dostaję zaktualizowanych plików, jeśli harmonogramy się zmieniają, co jest możliwe, ale w takim przypadku mogę po prostu usunąć plik z pulpitu i przejść stamtąd.

Szybko przeszukałem i znalazłem kilka linków do cmdletu Test-Path. Zasadniczo podajesz ścieżkę do pliku i zwraca ona wartość true lub false. Prawie dokładnie to, czego potrzebuję. Oto, co dodałem do mojego kodu:

if (Test-Path $DestinationFile) {

#zrób coś

}

Jednakże chcę podjąć działanie, jeśli plik nie istnieje. W większości języków, dodałbym ! z przodu, aby oznaczyć „nie”. Jednak to nie działa w PoSh, tak samo jak > nie oznacza większe niż.

Kolejne wyszukiwanie pokazało mi operator -NOT. To jest to, czego potrzebuję, ale nie mogę zrobić tego:

if (-NOT Test-Path $DestinationFile) {

#zrób coś

}

Zamiast tego muszę mieć pojedyncze wyrażenie dla -NOT, co oznacza więcej nawiasów. Nie jest to wielka sprawa. Użyłem tego kodu:

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

#zrób coś

}

To działało świetnie i teraz pobieram tylko te pliki, których potrzebuję. Jeśli chcę ponownie pobrać pliki (dla nowszych wydarzeń), po prostu usuwam te pliki i ponownie uruchamiam skrypt.

SQLNewBlogger

Ten post powstał, gdy zacząłem pracować nad skryptem. W rzeczywistości napisanie tego zajęło więcej czasu niż znalezienie rozwiązania, dodanie go do kodu i przetestowanie. Ten proces trwał około 5 minut.

Ten post zajął około 10 minut na napisanie. Miałem też drugi post oparty na podobnych modyfikacjach skryptu, więc zrobiłem to w kolejne 5 minut.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *