У меня есть пакетный файл Windows, который обрабатывает все файлы в заданной директории. У меня есть 206,783 файлы мне нужно обрабатывать:Как обойти ограничение обработки пакетного файла
for %%f in (*.xml) do call :PROCESS %%f
goto :STOP
:PROCESS
:: do something with the file
program.exe %1 > %1.new
set /a COUNTER=%COUNTER%+1
goto :EOF
:STOP
@echo %COUNTER% files processed
Когда я запустить пакетный файл, следующий вывод написано:
65535 обработанных файлов
Как часть обработки, для каждого обработанного файла создается выходной файл с расширением .new
. Когда я делаю dir *.new
, он сообщает 65535 файлов.
Таким образом, появляется моя команда среда имеет жесткое ограничение на количество файлов, которые он может распознать, и этот предел равен 64K - 1.
- Есть ли способ, чтобы расширить среду команды для управления более чем 64K - 1 файл?
- Если нет, сможет ли VBScript или JavaScript обрабатывать все 206 783 файла?
Я работаю на сервере Windows 2003, Enterprise Edition, 32-разрядный.
UPDATE
Похоже первопричиной моего вопроса был с командой встроенными в Windows «Extract» для ZIP файлов.
Файлы, которые я должен обрабатывать, были скопированы из другой системы через ZIP-файл. На моем сервере не установлена утилита ZIP, а только собственные команды Windows. Я щелкнул правой кнопкой мыши по файлу ZIP и сделал «Извлечь все ...», который, по-видимому, только что извлек первые 65 535 файлов.
Я загрузил и установил 7-zip на свой сервер, распаковал все файлы, и мой пакетный скрипт работал по назначению.
Что делает 'program.exe'? Разработана ли она самостоятельно? или какой-либо сторонний инструмент, который вы загрузили? Может 'program.exe' принимать аргументы, например' program.exe * .xml' ?? Действительно ли ваш вывод должен быть 1 файл на 1 входной файл? – ghostdog74
@ ghostdog74; program.exe разрабатывается самостоятельно, и, к сожалению, он может обрабатывать только один файл за один раз (я работаю в QA, поэтому я мало говорю о дизайне программы). И как программа в настоящее время разработана, она создаст 1 выходной файл для каждого входного файла. –
Возможно, вам пора изучить PowerShell. Кажется, вы нажимаете предел со времен 16-разрядных вычислений, что не должно удивлять. –