511 Stimmen

Verzeichnis erstellen, wenn es nicht vorhanden ist

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

Das Dateisystem sieht so aus

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 "Revisionen" Ordner enthalten bereits einen Reports-Ordner; jedoch die meisten nicht.

Ich muss ein Skript schreiben, das täglich läuft, um diese Ordner für jedes Verzeichnis zu erstellen.

Ich bin in der Lage, das Skript zu schreiben, um einen Ordner zu erstellen, aber das Erstellen mehrerer Ordner ist problematisch.

743voto

Andy Arismendi Punkte 47876

Versuchen Sie das -Force Parameter:

New-Item -ItemType Verzeichnis -Force -Path C:\Path\That\May\Or\May\Not\Exist

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

Weitere Details finden Sie im New-Item MSDN Hilfeartikel.

258voto

Guest Punkte 2581
$path = "C:\temp\NewFolder"
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 nicht, wird ein neues Verzeichnis erstellt. Wenn der Pfad existiert, aber eine Datei ist, wird ein Fehler ausgegeben (Sie können die Datei überschreiben, indem Sie das Argument -Force verwenden, wenn Sie risikofreudig sind).

48voto

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

Dies überprüft intern die Existenz des Verzeichnisses und erstellt eins, wenn kein Verzeichnis vorhanden ist. Nur eine Zeile und native .NET-Methode, die perfekt funktioniert.

28voto

Kyle Punkte 281

Verwendung:

$path = "C:\temp\"

If (!(test-path $path))
{
    md $path
}
  • Die erste Zeile erstellt eine Variable namens $path und weist ihr den Zeichenfolgenwert "C:\temp" zu

  • Die zweite Zeile ist eine If-Anweisung, die sich auf das Test-Path-Cmdlet verlässt, 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 das Tippen von: New-Item -ItemType Directory -Path $path

Hinweis: Ich habe nicht getestet, ob bei Verwendung des -Force-Parameters 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 genannte Funktion teilt den vom Benutzer übergebenen Pfad und überprüft jeden Ordner, ob er existiert oder nicht. Falls er nicht existiert, wird der jeweilige Ordner erstellt, bis der Ziel-/Endordner erstellt wurde.

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