CMD/BAT - [решено] Проверка длинны пути в XP

Ответить
Аватара пользователя
bombording

CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

Добрый день.

Необходимы идеи в реализации скрипта, который будет сканировать папку И выдавать те пути к файлам которые больше 260 символов.





Проблема в том что в XP есть ограничение на 260 символов в пути к файлу. Погуглив, пришёл к выводу что это ограничение никак не обойти....

Есть довольно большой ресурс, где необходимо выявить пути к файлам которые больше 260 символов....





Помогите пожалуйста.

Спасибо.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение Iska »

bombording, такой формат:



Код:

Код: Выделить всё

\\?\Диск:[\Каталог][\Файл]

пробовали использовать?



Путь к файлу — Википедия
Аватара пользователя
bombording

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

Iska, по \\?\UNC\server\catalog\

не заходит на ресурс.



А чем мне может помоч Long UNC вызов?
Аватара пользователя
bombording

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

bombording,

Узнать длину строки:



Код:

Код: Выделить всё

@echo off
setlocal
set "string=C:\some folder\some folder\some folder\some folder\file.ext"
:loop
set "string=%string:~0,-1%" && set /a len+=1
if defined string goto:loop
if %len% gtr 260 (echo wrong path length: %len%) else (echo Ok: %len%)
Аватара пользователя
bombording

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

Foreigner, А возможно в качестве переменной string задать директорию.



На ресурсе просто куча директорий и под директорий.
Аватара пользователя
bombording

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

bombording,

Вариант для проверки в директории:



Код:

Код: Выделить всё

@echo off
setlocal
pushd "d:\Some Folder" || goto:eof
for /f "tokens=*" %%i in ('dir /b /s /a') do call:checklen "%%i"
popd
goto:eof
:checklen
set "string=%~1"
:loop
set "string=%string:~0,-1%" && set /a len+=1
if defined string goto:loop
if %len% gtr 260 echo %len%: %1
set "len="
Аватара пользователя
bombording

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

Foreigner, Почему то не работает. Ставлю параметр gtr 10 echo %len%: %1

запускаю скрипт. Сканирование вроде бы идёт, но вот уже минут 5 как тишина..... Хотя в папке куча подпапок с длинной больше 10 символов. Мне так кажется скрипт не дружит с RU именами папок.
Аватара пользователя
SendMessage

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение SendMessage »

Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set "sdir=x:\folder"
for /f "delims=" %%a in ('dir %sdir% /b/s/a') do (
   set "cdir=%%a"
   if not "!cdir:~260,1!"=="" echo %%a
)
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение Foreigner »

Цитата bombording:



Почему то не работает. Ставлю параметр gtr 10 echo %len%: %1

запускаю скрипт. Сканирование вроде бы идёт, но вот уже минут 5 как тишина.....
CMD/BAT - [решено] Проверка длинны пути в XP




Не знаю, на локальной папке работает.


Цитата bombording:



скрипт не дружит с RU именами папок.
CMD/BAT - [решено] Проверка длинны пути в XP




Должен дружить. Если начальная папка кириллицей, то поставь в начале батника:



Код:

Код: Выделить всё

@echo off
1>nul chcp 1251
...
Аватара пользователя
bombording

Re: CMD/BAT - [решено] Проверка длинны пути в XP

Сообщение bombording »

Спасибо. Теперь всё работает.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»