Подсчитать количество символов в полном пути к файлу?

Подсчитать количество символов в полном пути к файлу?

Мне нужно иметь возможность подсчитать количество символов в полном пути к файлу в Windows. Как я сейчас выполняю эту задачу, так это:

  1. Откройте командную строку.
  2. Перейдите в нужный каталог (например, c:\CruiseControl\ProjectArtifacts\ProjectName)
  3. введите следующую команду директория /s /b > вывод.csv
  4. Откройте полученный файл output.csv в Excel.
  5. использовать=ДЛЁН()функция в Excel для подсчета количества символов в строке, указанных в файле output.csv.

Кто-нибудь знает расширение оболочки проводника или какой-нибудь сторонний инструмент, который мог бы выполнить эту функцию без необходимости манипулировать выводом из dir в Excel? Есть ли более простой способ сделать это? Корень проблемы, с которой я столкнулся, — это ограничение пути к файлу в ~260 символов в Windows. Я пытаюсь проанализировать, какие пути содержат около ~260 символов, чтобы я мог сократить их и избежать этой ошибки.

решение1

Такого рода вещи очень легко сделать сКорпус Hamilton 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 символов. Отрегулируйте количество точек по своему вкусу. Естественно, вы можете перенаправить вывод выше в файл для печати или другого анализа.

Связанный контент