计算完整文件路径中的字符数?

计算完整文件路径中的字符数?

我需要能够计算 Windows 中文件完整路径的字符数。我目前完成此任务的方法如下:

  1. 打开命令提示符
  2. cd 到相关目录(例如 c:\CruiseControl\ProjectArtifacts\ProjectName)
  3. 输入以下命令 dir /s /b > 输出.csv
  4. 在 Excel 中打开生成的 output.csv 文件。
  5. 使用=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 个字符的行(文件路径名)。请根据自己的喜好调整句点的数量。当然,您可以将上述输出重定向到文件以进行打印或其他分析。

相关内容