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.