ドライブ全体 (Z:) のディレクトリ、サブディレクトリ、およびファイルを、すべての日付とファイル サイズとともに 1 つのテキスト ファイルにリストします。その後、Excel 内でファイルを開くことができます。
現在、次のコマンドを使用しています。
dir z:\ /s /o:gne >text.txt
すべてのファイルとサブディレクトリが 1 つに積み重ねられ、個別にリストされずに、通常 tree コマンドで得られる出力と同様の出力を取得する方法はありますか?
時間などの不要な情報を削除したい場合は、何をすればよいですか? また、何を入力すればよいですか?
答え1
powershell ls -r -fo Z:\ ^|?{!$_.PSIsContainer}^|Select DirectoryName,Name,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime ^|epcsv Z:\excel.csv -En UTF8 -NoType -Delim ';'
^|
-^
- cmd 内のマスク トランスポーター/パイプ シンボル、|
- パイプ オブジェクト$_
- パイプライン内の現在のオブジェクトの変数。サンプル:powershell 'a','B','c','d','F' ^|%{if($_.toLower() -gt 'b'){write $_}}
?
= - ディレクトリ循環where
ではないかチェック?{!$_.PSIsContainer}
{}
ls -r
- すべてのサブディレクトリと現在のディレクトリ内のすべてのファイルを取得します-fo
=-force
- 隠し、システム、読み取り専用属性ファイルをリストに追加'Z:\' - ディレクトリ パス。'Z:' を使用する場合は、現在のディレクトリを Z: cd に設定します。
select
-ls
パイプオブジェクトのプロパティを選択epcsv
=Export-Csv
- PowerShell オブジェクトを区切り値 (CSV) ファイルにエクスポートします。-En
=-Encoding
- エンコーディング文字列 エクスポートされた CSV ファイルのエンコーディング。有効な値は、Unicode、UTF7、UTF8、ASCII、UTF32、BigEndian unicode、Default、および OEM です。デフォルトは ASCII です。-NoType
=-NoTypeInformation
- CSV ファイルからタイプ情報を省略します。-Delim ';'
--Delimiter
char プロパティ値を区切る区切り文字。デフォルトはカンマ (,) です。コロン (:) などの文字を入力します。セミコロン (;) を指定するには、引用符で囲みます。
結果:
答え2
上記にはディレクトリ名のスペースに関する問題があることがわかりましたが、私の経験では、この基本的な PowerShell コマンドの方がうまく機能します。
Get-ChildItem -r "Z:\" | select DirectoryName,Name,Extension,CreationTime,AccessTime,LastWriteTime | Export-Csv -Append -Path "Z:\export.csv" -En UTF8 -NoType -Delim ','
さらに、区切り文字「;」を使用すると Excel が混乱するため、これを「,」に変更すると、Excel はデータをさらに操作することなくエクスポートされた CSV を開くことができます。