511 Stimmen

Erstellen Sie das Verzeichnis, wenn es nicht existiert

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

Das Dateisystem sieht ähnlich aus wie das hier

D:\
D:\TopDirec\SubDirec\Project1\Revision1\Reports\
D:\TopDirec\SubDirec\Project2\Revision1\
D:\TopDirec\SubDirec\Project3\Revision1\
  • Jeder Projektordner hat mehrere Revisionen.
  • Jeder Revisionsordner benötigt einen Reports-Ordner.
  • Einige der "Revisions"-Ordner enthalten bereits einen "Reports"-Ordner, 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.

743voto

Andy Arismendi Punkte 47876

Versuchen Sie den -Force Parameter:

New-Item -ItemType Verzeichnis -Force -Path C:\Pfad\Der\Existieren\Könnte\Oder\Nicht

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

Siehe den New-Item MSDN Hilfeartikel für weitere Details.

258voto

Guest Punkte 2581
$path = "C:\temp\NeuerOrdner"
If(!(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 dies nicht der Fall ist, 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 die Existenz des Verzeichnisses und erstellt eines, wenn kein Verzeichnis vorhanden ist. Nur eine Zeile und native .NET-Methode, die perfekt funktioniert.

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 das cmdlet Test-Path angewiesen ist, um zu überprüfen, ob die Variable $path nicht existiert. Das "nicht existiert" wird durch das 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 Abkürzung für: New-Item -ItemType Directory -Path $path

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

New-Item -ItemType Directory -Path $path

20voto

Der folgende Code-Schnipsel hilft Ihnen, 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 oben stehende Funktion splittet den Pfad, den Sie der Funktion übergeben haben, und überprüft jeden Ordner, ob er existiert oder nicht. Wenn er nicht existiert, wird der jeweilige Ordner erstellt, bis der Ziel-/Endordner erstellt ist.

Um die Funktion aufzurufen, verwenden Sie 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