我有一个Windows批处理文件,用于处理给定目录中的所有文件。我有206783页的文件,我需要处理:如何解决批处理文件处理限制
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 2003服务器企业版32位上运行。
UPDATE
它看起来像我的问题的根本原因是与ZIP文件,内置的Windows“提取”命令。
我必须处理的文件是从另一个系统通过ZIP文件复制的。我的服务器没有安装ZIP实用程序,只有本地Windows命令。我右键单击ZIP文件,并执行了“全部提取...”,显然这只是提取了前65535个文件。
我下载并在我的服务器上安装了7-zip,解压缩了所有文件,并且我的批处理脚本按预期工作。
什么'program.exe'办?它是内部开发的吗?或者你下载的一些第三方工具? 'program.exe'可以带参数,例如'program.exe * .xml'?你的输出真的必须是每个输入文件1个文件吗? – ghostdog74 2010-03-11 14:52:40
@ ghostdog74; program.exe是内部开发的,不幸的是它一次只能处理1个文件(我在QA中工作,所以我在程序的设计中没有多少发言权)。程序目前的设计方式是每个输入文件创建1个输出文件。 – 2010-03-11 15:03:00
这可能是学习PowerShell的时候了。你似乎在16位计算的日子里受到了限制,这应该不会令人惊讶。 – 2010-03-11 21:09:25