Windows 仅在命令行中列出具有路径和文件大小的文件
Windows命令行(或者PowerShell) 如何以递归方式列出所有文件,具有完整路径和文件大小,但没有其他内容,并导出为.txt文件。最好是使用命令行为我所在的当前目录工作的代码(因此不需要手动输入目标目录) 这些都不提供路径\文件名和文件大小:Windows 仅在命令行中列出具有路径和文件大小的文件,windows,powershell,command-line,filenames,command-prompt,Windows,Powershell,Command Line,Filenames,Command Prompt,Windows命令行(或者PowerShell) 如何以递归方式列出所有文件,具有完整路径和文件大小,但没有其他内容,并导出为.txt文件。最好是使用命令行为我所在的当前目录工作的代码(因此不需要手动输入目标目录) 这些都不提供路径\文件名和文件大小: dir /s > filelist.txt dir /s/b > filelist.txt dir /s/o:-d > filelist.txt 所需输出(fullpath\file.ext filesize): c:\aaa
dir /s > filelist.txt
dir /s/b > filelist.txt
dir /s/o:-d > filelist.txt
所需输出(fullpath\file.ext filesize):
c:\aaa\file.ext 7755777
c:\aaa\bbb\1.txt 897667
c:\aaa\bbb\2.ext 67788990
c:\aaa\bbb\nnn\a.xls 99879000
PowerShell:
gci -rec -file|%{"$($_.Fullname) $($_.Length)"} >filelist.txt
早期PowerShell版本:
gci -rec|?{!$_.PSIsContainer}|%{"$($_.Fullname) $($_.Length)"} >filelist.txt
批处理文件:
(@For /F "Delims=" %%A in ('dir /B/S/A-D') Do @Echo %%~fA %%~zA) >filelist.txt
Cmdline
(@For /F "Delims=" %A in ('dir /B/S/A-D') Do @Echo %~fA %~zA) >filelist.txt
以下内容将删除您的包装问题:
Get-ChildItem -Recurse | select Length,LastWriteTime,FullName | Format-Table -Wrap -AutoSize | out-string -width 4096 | clip
查看此转到文件夹,然后按住shift键并右键单击-->Powershell,然后输入此代码
gci-rec-file |%{“$($.Length)~$($.Name)~$($.FullName)”}>filelist.txt
Ctrl+A
然后Ctrl+C
-->使用PowerShell将OP选择的答案复制到Excel中(以及他们使用的注释Get ChildItem-Recurse | select Length,LastWriteTime,FullName | Format Table-Wrap-AutoSize | Out File filelist.txt
)几乎就是我在Excel中处理的目的。谢谢那部分
forfiles /s /c "cmd /c echo @path @fsize" >filelist.txt
不幸的是,(正如他们所提到的)输出为长文件路径包装了行,这不是我想要的
以下命令将生成CSV格式的文件(无换行):
关于导出Csv的提示,真是太棒了!唯一的装饰性问题是输出在所有文件名之间额外放置了一个空行。有没有办法去掉这些空行?我正在处理许多TBs和>500K不同的文件。在path\filename.txt文件大小之间,即使是带有CSV或制表符或一个空格分隔字段的简单文本格式也可以。另一个功能问题是:如果路径或文件名太长,则会修剪path\filename.ext,然后在文件大小(长度)之前紧跟
…
专栏。例如:C:\aaa\bbb\ccc\verylongfilena。。。999999999
。有可能的解决办法吗?谢谢。这非常有效:Get ChildItem-Recurse | select Length,LastWriteTime,FullName | Format Table-Wrap-AutoSize | Out File filelist.txt
甚长路径\文件名行被拆分成新行(Wrap),但没有被截断。这并没有在Win 10上列出我的大小非常好(@For/F“Delims=“%A in('dir/B/S/A-D')Do@Echo%~fA%~zA)>filelist.txt
)不幸的是,在CLI中,(@For/F“Delims=“%A in('dir/B/S/A-D')Do@Echo%~fA%~zA)>filelist.txt在大型子目录树中不执行。尝试了1 TB/100K文件,持续运行数小时,直到我使用ctrl c终止。仍然适用于小目录树。您可以在powershell中尝试这两行Type num>filelist.txt
和@For/F“Delims=“%A('dir/B/S/A-D')Do@Echo%~fA%~zA>>filelist.txt
,我得到以下错误:get ChildItem:找不到与参数名“file”匹配的参数。在第1行char:15+gci-rec-file看起来您使用的是较早的PS版本。请参阅更改的答案。这是对@LotPings注释的调整,对我来说很有效。您需要转到数据选项卡并使用“文本到列”-->分隔符,而不是在“选项卡”上分隔,将其更改为“其他”并使用“~”
forfiles /s /c "cmd /c echo @path @fsize" >filelist.txt
Get-ChildItem -Recurse | select Length,LastWriteTime,FullName | Export-Csv -path filelist.csv -NoTypeInformation