Я написал командный файл для имитации поведения «Новая папка с выделением» в MacOS.Делать это в контекстном меню (с пользовательскими элементами) было неприятно, поэтому я выбрал подход «Отправить».
Я выбираю некоторыефайлы и отправлять их в файл .bat, и в этом файле я делаю необходимые операции:
@echo off
setlocal enabledelayedexpansion
set "def=New Folder"
set "name=%def%"
set /p name=Folder name:
set count=1
:loop
if not exist "%name%" goto :continue
set /a count+=1
set "name=%name% (%count%)
goto :loop
:continue
mkdir "%name%"
FOR %%A IN (%*) DO move "%%~A" "%cd%\\%name%"
Это работает очень хорошо, пока я не достигну предела количества символов.Например, я создал папку «test» в C. У меня есть 650 пустых файлов:
001.txt
002.txt
003.txt
004.txt
005.txt
...
Когда я пытаюсь отправить эти (650) файлы в мой пакетный файл, он не работает.Я могу отправить 504 файла, но не 505.
Вопрос не в подсчете.Я проверил отправку имен файлов / путей разной длины, и их количество меняется в зависимости от имени файла / пути.Там должно быть какое-то количество символов.Когда я печатаю %*
, я получаю (разделенные пробелами пути / список?)
C:\test\001.txt C:\test\002.txt C:\test\003.txt ...
Длина его 8063.
Я изменил имя папки "test" на ""уменьшить длину.Тогда я мог бы отправить 576 файлов.577 ломает это.Снова 576 файлов составляют 8063 символа.
Затем я изменил «te» на «t» и снова протестировал.На этот раз я мог отправить 620 файлов, что составляет 8059 символов.Отправка 621 файлов ломает его.Итак, я собираюсь угадать здесь и сказать, что ограничение, похоже, составляет около 8064.
Если общая длина символов всех аргументов (путей) превышает этот предел, пакетный файл не работает.
Почему это?Это где-нибудь задокументировано?Есть ли способ обойти это?
Кроме того, я не уверен, что это проблема, связанная с партиями.Это может быть связано с «Отправить».Это может быть даже не вызов файла bat из-за длины символа.Я не знаю, как это проверить.