Articles

Testen, ob eine Datei mit Powershell existiert

Ein weiterer Beitrag von mir, der einfach ist und hoffentlich als Beispiel für Leute dient, die versuchen, als#SQLNewBlogger zu bloggen.

Vor einiger Zeit habe ich ein PowerShell-Skript (PoSh) geschrieben, um die für die Guidebook-Anwendung verwendeten SQL Saturday XML-Dateien herunterzuladen. Diese enthalten eine Reihe von Informationen, die ich sammeln, umwandeln und aufbewahren wollte.

Allerdings war das Skript nicht besonders gut. Es durchlief im Grunde eine bestimmte Anzahl von Schleifen und lud die Dateien erneut herunter. Das ist nicht die effizienteste Lösung, vor allem, wenn es regelmäßig laufen soll.

Eine der Verbesserungen, die ich machen wollte, war zu prüfen, ob die Datei existiert, und wenn nicht, sie dann herunterzuladen. Wenn sie jedoch existiert, dann überspringe ich die Datei. Ich weiß, dass dies bedeutet, dass ich keine aktualisierten Dateien erhalte, wenn sich die Zeitpläne ändern, was möglich ist, aber in diesem Fall kann ich die Datei einfach von meinem Desktop löschen und von dort aus weitermachen.

Ich habe eine schnelle Suche durchgeführt und ein paar Links zum Cmdlet „Test-Path“ gefunden. Im Wesentlichen geben Sie diesem einen Dateipfad und es gibt true oder false zurück. Fast genau das, was ich brauche. Dies ist, was ich zu meinem Code hinzugefügt habe:

if (Test-Path $DestinationFile) {

#etwas tun

}

Allerdings möchte ich eine Aktion durchführen, wenn die Datei nicht existiert. In den meisten Sprachen würde ich ein ! davor setzen, um „nicht“ zu signalisieren. Das funktioniert aber in PoSh nicht, genau wie > nicht größer als bedeutet.

Eine weitere Suche zeigte mir den -NOT-Operator. Das ist, was ich brauche, aber ich kann das nicht tun:

if (-NOT Test-Path $DestinationFile) {

#etwas tun

}

Anstattdessen muss ich einen einzigen Ausdruck für -NOT haben, was mehr Klammern bedeutet. Keine große Sache. Ich habe diesen Code verwendet:

if (-NOT (Test-Pfad $Zieldatei)) {

#etwas tun

}

Das hat super funktioniert und jetzt lade ich nur die Dateien herunter, die ich brauche. Wenn ich erneut herunterladen möchte (für neuere Ereignisse), lösche ich einfach diese Dateien und führe das Skript erneut aus.

SQLNewBlogger

Dieser Beitrag entstand, als ich anfing, an dem Skript zu arbeiten. Es hat tatsächlich länger gedauert, dies zu schreiben, als die Lösung zu finden, sie in den Code einzufügen und zu testen. Dieser Prozess dauerte etwa 5 Minuten.

Dieser Beitrag hat etwa 10 Minuten gedauert. Ich hatte auch einen zweiten Beitrag, der auf ähnlichen Änderungen am Skript basiert, also habe ich das in weiteren 5 Minuten gemacht.

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.