如何在windows ver 5.1命令行中找到大文件?
对于Windows ver 6.1,我可以运行以下命令:
forfiles / p c:\ / s / m 。 / c“cmd / c if @fsize gtr 100000 echo @file @fsize“
然而,版本5.1窗口的等效命令是什么?
感谢您的快速帮助!
(添加引号)
答案 0 :(得分:5)
从命令行运行
for /r c:\ %f in (*) do if %~zf gtr 100000 echo %f %~zf
要从批处理文件运行它,请使用%
%%
编辑 - 如评论中所述,批处理命令行中的算术对操作数有一些限制。在这种情况下,%~zf
命令左侧部分的for
(if
命令中引用的文件大小)没有问题,但正确大小的值仅限于值从-2147483647
到2147483646
。
要处理它,如果在管理员帐户下执行命令,则可以使用wmic
命令。 OP问题中的命令可以写为
wmic datafile where "drive='c:' AND filesize>'100000'" get caption, filesize
答案 1 :(得分:0)
首先搜索实际目录中的最大目录
diruse /* /m /c /, . |sort
cd到选定的目录;你可以再次使用diruse或 搜索所选目录中的最大文件,例如超过500MB:
forfiles /s /c "cmd /c if @fsize gtr 500000000 echo @path @fsize bytes"
答案 2 :(得分:0)
对于Windows,我找不到适合我命令行的答案,因此我在Powershell中编写了答案。 以下代码将帮助您在所需的扫描路径中找到文件列表(大于1 KB)。
#通过Powershell运行
#$PathToScan refers to the directory where you want to find your files greater than 1 KB.
$PathToScan="E:\"
"Path to scan:`t $PathToScan"
$hash = $null
$hash = @{}
Get-ChildItem -path $PathToScan -recurse | Where-Object {
#If you want to find files greater than 1GB, replace all KB in this powershell script to GB.
($_.Length /1KB) -gt 2
} | ForEach-Object {
$hash.add(
$_.DirectoryName.Replace("$PathToScan","")+$_.Name,
[math]::Round(($_.length/1KB),0))
}
$TableStyle = @{Expression={$_.Value}; Label="Size (KB)"; Width=10; Alignment = 'Left'},
@{Expression={$_.Name}; Label="Name"; Width=100}
$hash.GetEnumerator() | Sort Value -Descending| Format-Table -Property $TableStyle
Countdown 5
Function Countdown{
Param ($TimeInSec)
Do {
Write-Host "$TimeInSec"
Start-Sleep -s 1
$TimeInSec--
}
Until ($TimeInSec -eq 0)
}
或者您可以在这里查看我的代码; [为Windows查找以KB为单位的大文件]: https://github.com/worldpeacez0991/powershell
希望我的回答对某人有帮助,祝您度过愉快的一天^ ^