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

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

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

3 ответа3

1

Может быть, эти простые командные файлы пригодятся.

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.

Вызовите пакетный файл и передайте ему полный путь в качестве аргумента (обязательно используйте кавычки, если путь содержит пробелы). Обратите внимание, что проверка ошибок не выполняется, поэтому пропуски кавычек, когда путь содержит пробелы, приведут к неверному (низкому) количеству, а добавление дополнительных обратных косых черт в конце увеличит их.

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%
0

Это не ответ на ваш вопрос, но он решает вашу проблему.  Тип

dir /s /b | findstr -r ...............................................................................................................................................................................................................................................................

На моей иллюстрации выше я набрал 255 периодов; это сделает каталог dir /s /b , который вы уже знаете, и покажет только строки (пути к файлам) длиной не менее 255 символов.  Настройте количество периодов по своему вкусу.  Естественно, вы можете перенаправить вывод вышеизложенного в файл для печати или другого анализа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .