我需要能夠計算 Windows 中檔案的完整路徑中的字元數。我目前完成這項任務的方式如下:
- 開啟命令提示符
- cd 到相關目錄(例如 c:\CruiseControl\ProjectArtifacts\ProjectName)
- 輸入以下命令 dir /s /b > 輸出.csv
- 在 Excel 中開啟產生的 output.csv 檔案。
- 使用=LEN()Excel 中的函數可計算 output.csv 檔案中所列的每行字元數。
有誰知道資源管理器 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 個字元的行(檔案路徑名)。依照您的喜好調整週期數。當然,您可以將上述輸出重定向到檔案以進行列印或其他分析。