У меня есть пакетный файл 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
, он сообщает, что существует 65 535 файлов.
Итак, похоже, что моя командная среда имеет жесткое ограничение на количество распознаваемых файлов, и это ограничение составляет 64 КБ - 1.
- Есть ли способ расширить командную среду для управления более чем 64K - 1 файлами?
- Если нет, сможет ли VBScript или JavaScript обработать все 206 783 файла?
Я работаю на Windows 2003 server, Enterprise Edition, 32-bit.
UPDATE
Похоже, что основной причиной моей проблемы была встроенная в Windows команда извлечения ZIP-файлов.
Файлы, которые я должен обработать, были скопированы из другой системы через ZIP-файл. На моем сервере не установлена утилита ZIP, только собственные команды Windows. Я щелкнул правой кнопкой мыши по ZIP-файлу и сделал «Извлечь все ...», которое, по-видимому, просто извлекло первые 65 535 файлов.
Я скачал и установил 7-zip на свой сервер, разархивировал все файлы, и мой пакетный скрипт работал как положено.