首页 > 解决方案 > 文件列表 - 包括带有文件名、路径、日期和大小的所有子文件夹

问题描述

我正在尝试获取目录中所有文件的列表,包括所有子文件夹中的文件。

我想要的列是FilenamePath和。SizeDate

我曾尝试进行自己的研究并接近但尚未找到完整的解决方案。

我可以使用下面的命令获取文件路径和文件名以及日期和大小,不幸的是我无法获取子文件夹中的所有文件。

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 导入?

标签: windowscmdfilelist

解决方案


这可以通过 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"

推荐阅读