日期:2014-05-17  浏览次数:21137 次

批处理文件中,调用其他程序,输入参数的问题
具体情况是这样的:
我生成一个程序A.exe,是用来处理字符串的,在命令行中可以输入 “.\A.exe 123456789000”来运行,
我相写一个批处理文件,来处理一组字符串。
我第一次写成的是这个样子:
@echo off
for /L %%i in (11100,1,111300) do (
call .\A.exe %%i
)
pause

确实实现了依次处理从11100到11300这201个数,也是我想要的功能。

后来我想处理更大的数,上面直接改成:
@echo off
for /L %%i in (111111111100,1,111111111300) do (
call .\A.exe %%i
)
pause

运行后发现每次显示的变量%%i值变了,第一个值是2147483647,接下来是-2147483647、-2147483646……;
查了些资料后发现问题是Dos中对数字的表示只能精确32位二进制数,最大表示范围就是-2147483647~2147483647,
我上面输入的数字已经是12位的,超出了范围。

现在想知道怎么才能实现我的那个想法???????????
希望大家指点。

另外我还试过将想要处理的数字串放到文本文档中,再一个个读出来处理,是这样写的:
@echo off
for /F "delims=" %%i in (1.txt) do if exist %%i (
call .\A.exe %%i
)
pause

看提示确实是执行了“call .\A.exe 111111111100”,但是没有想要的结果。
而我在命令行中直接输入“.\A.exe 111111111100”是没有问题的。
大家说说看,这是什么问题????????

------解决方案--------------------
@echo off
for /L %%i in (100,1,300) do (
call .\A.exe 111111111%%i
)
pause


------解决方案--------------------
关于第2个问题,if exist 是判断文件是否存在的。。。