Frage

Heute habe ich begonnen Scripting in Windows Powershell - also bitte entschuldigen Sie meine "Stummheit" ...

Ich mag txt-Dateien mit dem Namen der Unterordner jeden „Rootfolders“ auf Laufwerk G erstellen :. Auf G: \ Ich habe die folgenden Ordner:

1_data
2_IT_area
3_personal
4_apprenticeship
7_backup
8_archives
9_user_profile

So schrieb ich dieses Skript:

get-childitem G:\ | ForEach-Object -process {gci $_.fullName -R} | WHERE {$_.PSIsContainer} > T:\listing\fileListing+$_.Name+.txt

Aber das Skript nicht tun, was ich will - es ist nur eine Textdatei zu erstellen .. u kann mir helfen? Ich versuchte es schon, wie hier beschrieben >> http: //www.powershellpro .com / Powershell-Tutorial-Einführung / Variablen-Arrays-Hashes / "T:. \ Verzeichnis \ _ $ Name.txt" - nicht funktioniert auch ...

Vielen Dank u sehr viel für Ihre Hilfe!

-Patrick

War es hilfreich?

Lösung

Dies sollte das tun, was Sie wollen:

Get-ChildItem G:\ | Where {$_.PSIsContainer} | 
    Foreach {$filename = "T:\fileListing_$($_.Name).txt"; 
             Get-ChildItem $_ -Recurse > $filename} 

Und wenn diese interaktiv eingeben (mit Aliasnamen):

gci G:\ | ?{$_.PSIsContainer} | %{$fn = "T:\fileListing_$($_.Name).txt"; 
                                  gci $_ -r > $fn} 

Die $_ spezielle Variable ist in der Regel nur gültig innerhalb eines Skript { ... } entweder für einen Foreach-Object, Where-Object oder jedem anderen Pipeline im Zusammenhang Skript. So ist die folgende Dateinamen Konstruktion T:\listing\fileListing+$_.Name+.txt ist nicht ganz richtig. Normalerweise würden Sie eine Variable in einem String erweitern etwa so:

$name = "John"
"His name is $name"

Allerdings, wenn Sie ein Mitglied eines Objekts zugreifst wie mit $_.Name dann müssen Sie in der Lage sein, einen Ausdruck innerhalb der Zeichenfolge auszuführen. Sie können das tun die subexpression Operator $() z.

"T:\listing\fileListing_$($_.Name).txt"

Alles, Dateiname String Konstruktion zur Seite, Sie nicht $_ außerhalb eines Skript verwenden können. So bewegen Sie nur den Dateinamen Konstruktion im Inneren des Foreach Skript. Dann erstellen Sie diese Datei mit dem Inhalt des zugehörigen dir zu diesem Dateinamen umgeleitet -., Welche die Datei erstellen wird

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top