Я хотел бы знать, разработал ли кто-нибудь эффективный способ для NT длины пакета вычислений в данной папке. Это необходимо для определения файлов и папок, которые не будут успешно архивироваться на оптические носители, которые продолжают применять ограничения пути в 260 символов, хотя NTFS теперь поддерживает длину пути до 32 767 символов.
Я использовал пакетный скрипт, который работает, выводя каждый полный путь к файлу, измеряя размер файла и вычитая 2, чтобы получить количество символов в пути. Это хорошо работает для небольшого количества файлов, но занимает много времени, чтобы закончить для большого количества файлов. В идеале я хотел бы что-то, что работает почти так же быстро, как сама команда 'dir'.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set Limit=%~1
echo Paths being found which exceed !Limit!
echo ======================================
type NUL > "!temp!\tabulator.txt"
FOR /F "tokens=1 delims=" %%A IN ('dir /o:-n /b /s') DO (
set Test=%%A
call set Test=%%Test:~%Limit%%%.
IF !Test! NEQ . (
type NUL > "!temp!\pathlengthdeterminationtemp.txt"
echo %%A > "!temp!\pathlengthdeterminationtemp.txt"
FOR /F "tokens=1 delims=" %%H IN ('dir /s /o /b "!temp!\pathlengthdeterminationtemp.txt"') DO set StrLen=%%~zH
del "!temp!\pathlengthdeterminationtemp.txt"
set /a StrLen=!StrLen!-2
echo !StrLen!,%%A>> "!temp!\tabulator.txt"
)
)
sort "!temp!\tabulator.txt" /O "!temp!\tabulator1.txt"
del "!temp!\tabulator.txt"
TYPE "!temp!\tabulator1.txt"
del "!temp!\tabulator1.txt"
ENDLOCAL
