Я хотел бы знать, разработал ли кто-нибудь эффективный способ для 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