windows - 文件列表 - 包括带有文件名、路径、日期和大小的所有子文件夹
问题描述
我正在尝试获取目录中所有文件的列表,包括所有子文件夹中的文件。
我想要的列是Filename
、Path
和。Size
Date
我曾尝试进行自己的研究并接近但尚未找到完整的解决方案。
我可以使用下面的命令获取文件路径和文件名以及日期和大小,不幸的是我无法获取子文件夹中的所有文件。
dir /t > filelist1.txt
下面的 CMD 命令确实从所有子文件夹中获取文件名,但我无法让它生成日期。
(@For /F "Delims=" %A in ('dir /B/S/A-D') Do @Echo %~fA %~zA) >filelist.txt
我想也许这样做是为了包括日期,但它没有用。
(@For /F "Delims=" %A in ('dir /B/S/A/D') Do @Echo %~fA %~zA) >filelist.txt
该文件还为我提供了我可以接受的路径和文件名(我将使用 Excel 进行分隔),但是否可以将路径和文件名分开?
是否可以将这些列用制表符分隔以便于 Excel 导入?
解决方案
这可以通过 cmd.exe 批处理脚本中的 %~ 变量来完成。但是,它在 PowerShell 中更容易且更具可读性。输出在一个名为FileList.csv
.
Get-ChildItem -Recurse |
ForEach-Object {
[PSCustomObject]@{
FileName = $_.Name
Path = $_.Directory
Size = $_.Length
Date = $_.LastWriteTime
}
} |
Export-Csv -Path './FileList.csv' -Delimiter "`t" -Encoding ASCII -NoTypeInformation
如果您不想从 .bat 脚本运行 .ps1 文件,可以通过足够的努力将其放入 .bat 文件脚本中。
powershell -NoLogo -NoProfile -Command ^
"Get-ChildItem |" ^
"ForEach-Object {" ^
"[PSCustomObject]@{" ^
"FileName = $_.Name;" ^
"Path = $_.Directory;" ^
"Size = $_.Length;" ^
"Date = $_.LastWriteTime" ^
"}" ^
"} |" ^
"Export-Csv -Path './FileList.csv' -Delimiter "`t" -Encoding ASCII -NoTypeInformation"