我需要能够计算 Windows 中文件完整路径的字符数。我目前完成此任务的方法如下:
- 打开命令提示符
- cd 到相关目录(例如 c:\CruiseControl\ProjectArtifacts\ProjectName)
- 输入以下命令 dir /s /b > 输出.csv
- 在 Excel 中打开生成的 output.csv 文件。
- 使用=LEN()Excel 中的函数用于计算 output.csv 文件中列出的每行字符数。
有谁知道 explorer shell 扩展或某些第三方工具可以执行此功能,而无需我操纵 excel 中 dir 的输出?有没有更简单的方法可以做到这一点?我遇到的问题的根源是 Windows 中 ~260 个字符的文件路径限制。我正在尝试分析哪些路径大约为 ~260 个字符,以便我可以缩短它们以避免出现此错误。
答案1
这种事很容易做汉密尔顿C壳。如果这是一次性的事情,你会对免费版本。下面是生成目录中多个文件的完整路径,然后计算字符串长度的示例c:\Windows
。完全披露:我是作者。
128 C% cd
c:\Windows
129 C% ls mi*
Microsoft.NET Minidump mib.bin
130 C% foreach i ( mi* )
131 C? @ f = fullpath ( i )
132 C? echo $i $f $strlen(f)
133 C? end
mib.bin c:\Windows\mib.bin 18
Microsoft.NET c:\Windows\Microsoft.NET 24
Minidump c:\Windows\Minidump 19
134 C%
答案2
也许这些简单的批处理文件会派上用场。
1)计算当前目录中的字符数:
@echo off
echo %cd%>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=2
echo Path length = %len% chars.
cd
到目录。然后调用批处理文件。
2)统计指定目录中的字符数:
@echo off
echo %1>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=4
echo Path length = %len% chars.
调用批处理文件并将完整路径作为参数传递给它(如果路径包含空格,请务必使用引号)。请注意,不会进行错误检查,因此当路径包含空格时省略引号会导致计数不正确(较低),而在末尾添加额外的反斜杠将增加计数。
答案3
这不是对你问题的回答,但它解决了你的问题。输入
dir /s /b | findstr -r ...............................................................................................................................................................................................................................................................
在上面的插图中,我输入了 255 个句点;这将执行dir /s /b
您已经知道的操作,并仅显示长度至少为 255 个字符的行(文件路径名)。请根据自己的喜好调整句点的数量。当然,您可以将上述输出重定向到文件以进行打印或其他分析。