Windows でファイルへのフルパスの文字数をカウントできるようにする必要があります。現在このタスクを実行する方法は次のとおりです。
- コマンドプロンプトを開く
- 問題のディレクトリにcdします(例:c:\CruiseControl\ProjectArtifacts\ProjectName)
- 次のコマンドを入力してください dir /s /b > 出力.csv
- 結果の output.csv ファイルを Excel で開きます。
- 使用=長さ()output.csv ファイルにリストされている行ごとの文字数をカウントする Excel の機能。
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 文字の長さの行 (ファイル パス名) のみが表示されます。ピリオドの数は好みに応じて調整してください。もちろん、上記の出力をファイルにリダイレクトして、印刷やその他の分析を行うこともできます。