Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 仅在命令行中列出具有路径和文件大小的文件_Windows_Powershell_Command Line_Filenames_Command Prompt - Fatal编程技术网

Windows 仅在命令行中列出具有路径和文件大小的文件

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

Windows命令行(或者PowerShell)

如何以递归方式列出所有文件,具有完整路径和文件大小,但没有其他内容,并导出为.txt文件。最好是使用命令行为我所在的当前目录工作的代码(因此不需要手动输入目标目录)

这些都不提供路径\文件名和文件大小:

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