我有一个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个文件。因此,似乎我的命令环境对可以识别的文件数量有一个硬性限制,这个限制是64K - 1。
- 是否有办法扩展命令环境以管理超过64K - 1个文件?
- 如果没有,VBScript或JavaScript能够处理所有206,783个文件吗?
更新 看起来我的问题的根本原因是内置的Windows“提取”命令用于ZIP文件。
我需要处理的文件通过ZIP文件从另一个系统复制而来。我的服务器没有安装ZIP实用程序,只有原生的Windows命令。我右键单击ZIP文件,然后选择“全部提取...”,这显然只提取了前65,535个文件。
我下载并安装了7-zip到我的服务器上,解压缩了所有文件,然后我的批处理脚本按预期工作。
program.exe
是做什么的?它是内部开发的还是你下载的第三方工具?program.exe
能否接受参数,例如program.exe *.xml
?你的输出是否真的必须是每个输入文件一个文件? - ghostdog74