Ich möchte alle Verzeichnisse, Unterverzeichnisse und Dateien eines ganzen Laufwerks (Z:) in einer einzigen Textdatei mit allen Daten und Dateigrößen auflisten. Ich kann die Datei dann in Excel öffnen.
Ich verwende derzeit den folgenden Befehl:
dir z:\ /s /o:gne >text.txt
Gibt es eine Möglichkeit, eine Ausgabe zu erhalten, die der üblichen Ausgabe mit dem Befehl „tree“ ähnelt, wobei alle Dateien und Unterverzeichnisse in einem gestapelt und nicht separat aufgelistet sind?
Was muss ich tun bzw. eingeben, wenn ich andere, nicht benötigte Angaben, wie beispielsweise die Uhrzeit, entfernen möchte?
Antwort1
powershell ls -r -fo Z:\ ^|?{!$_.PSIsContainer}^|Select DirectoryName,Name,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime ^|epcsv Z:\excel.csv -En UTF8 -NoType -Delim ';'
^|
-^
- Transporter/Pipe-Symbol in cmd maskieren,|
- Pipe-Objekt$_
- Variable für das aktuelle Objekt in der Pipeline; Beispiel:powershell 'a','B','c','d','F' ^|%{if($_.toLower() -gt 'b'){write $_}}
?
=where
- Prüfung ist kein?{!$_.PSIsContainer}
Verzeichniszyklus{}
ls -r
- Alle Dateien im/und allen Unterverzeichnissen und dem aktuellen Verzeichnis abrufen-fo
=-force
- zur Liste versteckte, System- und schreibgeschützte Attributdateien hinzufügen„Z:\“ – Verzeichnispfad, bei Verwendung von „Z:“ – aktuelles Verzeichnis auf Z: cd festlegen.
select
- Eigenschaften amls
Pipe-Objekt auswählenepcsv
=Export-Csv
– Exportieren Sie ein PowerShell-Objekt in eine Datei mit getrennten Werten (CSV).-En
=-Encoding
- Kodierungszeichenfolge Die Kodierung für die exportierte CSV-Datei. Gültige Werte sind: Unicode, UTF7, UTF8, ASCII, UTF32, BigEndian Unicode, Standard und OEM. Der Standardwert ist ASCII.-NoType
=-NoTypeInformation
- Lassen Sie die Typinformationen aus der CSV-Datei weg.-Delim ';'
--Delimiter
char Ein Trennzeichen zur Trennung der Eigenschaftswerte. Der Standardwert ist ein Komma (,). Geben Sie ein Zeichen ein, z. B. einen Doppelpunkt (:). Um ein Semikolon (;) anzugeben, setzen Sie es in Anführungszeichen.
Ergebnis:
Antwort2
Ich habe festgestellt, dass es oben Probleme mit Leerzeichen in Verzeichnisnamen gibt. Dieser grundlegende Powershell-Befehl funktioniert meiner Erfahrung nach besser:
Get-ChildItem -r "Z:\" | select DirectoryName,Name,Extension,CreationTime,AccessTime,LastWriteTime | Export-Csv -Append -Path "Z:\export.csv" -En UTF8 -NoType -Delim ','
Darüber hinaus ist die Verwendung des Trennzeichens „;“ für Excel verwirrend. Wenn Sie es in „“, ändern, kann Excel die exportierte CSV-Datei ohne weitere Manipulation der Daten öffnen.