511 Stimmen

Erstellen Sie das Verzeichnis, wenn es noch nicht existiert.

Ich schreibe ein PowerShell-Skript, um mehrere Verzeichnisse zu erstellen, wenn sie nicht vorhanden sind.

Das Dateisystem sieht ähnlich aus wie folgt

D:\
D:\TopDirec\SubDirec\Project1\Revision1\Reports\
D:\TopDirec\SubDirec\Project2\Revision1\
D:\TopDirec\SubDirec\Project3\Revision1\
  • Jedes Projektverzeichnis hat mehrere Revisionen.
  • Jedes Revisionsverzeichnis benötigt ein Reports-Verzeichnis.
  • Einige der "Revisions"-Ordner enthalten bereits ein Reports-Verzeichnis; 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 ein Verzeichnis zu erstellen, aber das Erstellen mehrerer Verzeichnisse ist problematisch.

743voto

Andy Arismendi Punkte 47876

Versuchen Sie den -Force Parameter:

New-Item -ItemType Directory -Force -Path C:\Pfad\Der\Existieren\Oder\Auch\Nicht\Existieren\Kann

Sie können zuerst Test-Path -PathType Container verwenden, um zu prüfen.

Sehen Sie sich den New-Item MSDN Hilfeartikel für weitere Details an.

258voto

Guest Punkte 2581
$path = "C:\temp\NewFolder"
Wenn(!(test-path -PathType container $path))
{
      New-Item -ItemType Directory -Path $path
}

Test-Path -PathType container überprüft, ob der Pfad existiert und ein Verzeichnis ist. Wenn nicht, wird ein neues Verzeichnis erstellt. Wenn der Pfad existiert, aber eine Datei ist, wird ein Fehler angezeigt (Sie können die Datei überschreiben, indem Sie das Argument -force verwenden, wenn Sie risikofreudig sind).

48voto

filimonic Punkte 3504
[System.IO.Directory]::CreateDirectory('voller Pfad zum Verzeichnis')

Dies überprüft intern, ob das Verzeichnis vorhanden ist, und erstellt es, wenn kein Verzeichnis vorhanden ist. Nur eine Zeile und nativ .NET-Methode, die perfekt funktioniert.

Please note that the translation is just one possible option and may vary based on context.

28voto

Kyle Punkte 281

Verwendung:

$ path = "C:\temp\"

Wenn (!(Test-Path $ path))
{
    md $ path
}
  • Die erste Zeile erstellt eine Variable mit dem Namen $ path und weist ihr den Zeichenfolgenwert "C: \ temp" zu

  • Die zweite Zeile ist eine If-Anweisung, die auf dem Test-Path cmdlet basiert, um zu überprüfen, ob die Variable $ path nicht existiert. Das Nicht-Existieren wird mit dem Symbol ! qualifiziert.

  • Dritte Zeile: Wenn der im obigen String gespeicherte Pfad nicht gefunden wird, wird der Code zwischen den geschweiften Klammern ausgeführt.

md ist die Kurzform für: New-Item -ItemType Directory -Path $ path

Hinweis: Ich habe nicht getestet, ob bei Verwendung des Parameters -Force unten unerwünschtes Verhalten auftritt, wenn der Pfad bereits vorhanden ist.

New-Item -ItemType Directory -Path $ path

20voto

Der folgende Code-Schnipsel hilft Ihnen dabei, einen vollständigen Pfad zu erstellen.

Funktion GenerateFolder($path) {
    $global:foldPath = $null
    foreach($foldername in $path.split("\")) {
        $global:foldPath += ($foldername+"\")
        if (!(Test-Path $global:foldPath)){
            New-Item -ItemType Directory -Path $global:foldPath
            # Write-Host "$global:foldPath Ordner erfolgreich erstellt"
        }
    }
}

Die obige Funktion teilt den Pfad, den Sie der Funktion übergeben haben, auf und überprüft jeden Ordner, ob er existiert oder nicht. Falls er nicht existiert, wird der entsprechende Ordner erstellt, bis der Ziel-/Endordner erstellt wurde.

Um die Funktion aufzurufen, verwenden Sie die folgende Anweisung:

GenerateFolder "H:\Desktop\Nithesh\SrcFolder"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X