Ich schreibe ein PowerShell-Skript, um mehrere Verzeichnisse zu erstellen, falls diese nicht vorhanden sind.
Das Dateisystem sieht ähnlich aus
D:\
D:\TopDirec\SubDirec\Project1\Revision1\Reports\
D:\TopDirec\SubDirec\Project2\Revision1\
D:\TopDirec\SubDirec\Project3\Revision1\
- Jeder Projektordner verfügt über mehrere Revisionen.
- Jeder Revisionsordner benötigt einen Berichtsordner.
- Einige der "Revisions" -Ordner enthalten bereits einen Berichtsordner. Die meisten jedoch nicht.
Ich muss ein Skript schreiben, das täglich ausgeführt wird, um diese Ordner für jedes Verzeichnis zu erstellen.
Ich kann das Skript schreiben, um einen Ordner zu erstellen, aber das Erstellen mehrerer Ordner ist problematisch.
Antworten:
Probieren Sie den
-Force
Parameter aus:Sie können verwenden
Test-Path -PathType Container
, um zuerst zu überprüfen.Sehen Sie sich den New-Item MSDN Hilfe - Artikel für weitere Details.
quelle
Test-Path
prüft, ob der Pfad existiert. Wenn dies nicht der Fall ist, wird ein neues Verzeichnis erstellt.quelle
test-path
).Mit dem folgenden Codeausschnitt können Sie einen vollständigen Pfad erstellen.
Die obige Funktion teilt den Pfad auf, den Sie an die Funktion übergeben haben, und überprüft jeden Ordner, ob er vorhanden ist oder nicht. Wenn es nicht vorhanden ist, wird der entsprechende Ordner erstellt, bis der Ziel- / Endordner erstellt wurde.
Verwenden Sie die folgende Anweisung, um die Funktion aufzurufen:
quelle
Ich hatte genau das gleiche Problem. Sie können so etwas verwenden:
quelle
Wenn Sie das
-Force
Flag angeben , beschwert sich PowerShell nicht, wenn der Ordner bereits vorhanden ist.Einzeiler:
Übrigens, um die Aufgabe zu planen, lesen Sie bitte diesen Link: Planen von Hintergrundjobs .
quelle
Verwenden:
In der ersten Zeile wird eine Variable mit dem Namen erstellt
$path
und ihr der Zeichenfolgenwert "C: \ temp \" zugewiesen.Die zweite Zeile ist eine
If
Aussage , die auf das beruht Test-Path - Cmdlets zu überprüfen , ob die Variable$path
ist nicht vorhanden. Das nicht existierende wird mit dem!
Symbol qualifiziert.Dritte Zeile: Wenn der in der obigen Zeichenfolge gespeicherte Pfad nicht gefunden wird, wird der Code zwischen den geschweiften Klammern ausgeführt.
md
ist die Kurzversion des Tippens:New-Item -ItemType Directory -Path $path
Hinweis: Ich habe den folgenden
-Force
Parameter nicht mit dem folgenden Parameter getestet, um festzustellen, ob ein unerwünschtes Verhalten vorliegt, wenn der Pfad bereits vorhanden ist.quelle
md "C:\first\second\third
, die alle erstellen.Ich kenne drei Möglichkeiten, um ein Verzeichnis mit PowerShell zu erstellen:
quelle
Aus Ihrer Situation heraus scheint es, als müssten Sie einmal täglich einen Ordner "Revision #" mit einem Ordner "Berichte" erstellen. Wenn dies der Fall ist, müssen Sie nur die nächste Revisionsnummer kennen. Schreiben Sie eine Funktion, die die nächste Revisionsnummer erhält, Get-NextRevisionNumber. Oder Sie könnten so etwas tun:
PowerShell 3.0-Installation .
quelle
Ich wollte in der Lage sein, Benutzern das Erstellen eines Standardprofils für PowerShell zu ermöglichen, um einige Einstellungen zu überschreiben, und erhielt den folgenden Einzeiler (mehrere Anweisungen ja, kann aber in PowerShell eingefügt und sofort ausgeführt werden, was das Hauptziel war ):
Zur besseren Lesbarkeit würde ich dies stattdessen in einer .ps1-Datei tun:
quelle
Hier ist eine einfache, die für mich funktioniert hat. Es wird geprüft, ob der Pfad vorhanden ist. Wenn dies nicht der Fall ist, wird nicht nur der Stammpfad, sondern auch alle Unterverzeichnisse erstellt:
quelle