【发布时间】:2015-08-18 02:03:59
【问题描述】:
这是我用来生成文件夹大小的代码
for /f "tokens=3,5" %%a in ('
dir /a /s /w /-c "%target%"
^| findstr /b /l /c:" "
') do if "%%b"=="" set "size=%%a"
echo %size%
我遇到了一个问题,其中某些文件夹的子文件夹太多,并且它显示“目录名称“K:\Really\Long\Path\Blah”太长”(不是实际的dir - 实际的 dir 长度超过 260 个字符)。因此,它永远不会获得该文件夹的大小,而且我的大小不正确。
【问题讨论】:
-
您可以尝试使用 PowerShell 方式。 (别担心。您仍然可以将其放入 .bat 脚本中。)
for /f "usebackq" %%a in (`powershell "gci -r -path '%target%' ^| %%{ $s += $_.length }; '{0:N0}' -f $s"`) do set "size=%%a" -
nope, still get "gci : The specified path, file name, or both are too long. 全限定文件名必须小于 260 个字符,目录名必须小于 248 个字符。”
-
for /f "usebackq" %%a in (`powershell "gci -r -path '%target%' ^| measure -s length ^| %%{ '{0:N0}' -f $_.sum }"`) do set "res=%%a"怎么样? -
for /f "usebackq" %%a in (
powershell "gci -r -path 'K:\AA\Test aaaa Aaaaaaaaaa\AAAA A\aa-AAAA\Long\Loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' | measure -s length ^| %%{ '{0:N0}' -f $_.sum }") do echo %%a ---> 这给了我最后一个输出为 '+' - 我没有看到任何其他正在输出的相关信息
标签: batch-file cmd directory size