楼 主
请高手帮忙,改写一个批处理
发表于 2009-09-15 04:48 · 中国 北京 鹏博士BGP
新手上路
★
积分 10
发帖 6
注册 2007-08-16 16:51
UID 95262
性别 男
状态 离线
我想写一个批处理文件,需求如下:
1、文件test.txt中的值为0或1;
2、如果读取的值是0,调用a.exe,如果读取的值是1则调用b.exe
这是我写的批处理:
FOR /F %%a in(test.txt) do if %%a == 0 (call a.exe) else call b.exe
在DOS6.22下执行,报语法错误,请高手帮忙改写,谢谢了!
[ Last edited by kaixin1228 on 2009-9-15 at 22:50 ]
第 2 楼
发表于 2009-09-15 05:08 · 中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
批处理读取的返回代码只能是%ERRORLEVEL%
1,echo;%%a看一下究竟返回的是什么
2,上传你的test.exe
3,if不需要写那么复杂,如果%%a 只存在0或1的可能,则可以直接写成 if %%a equ 0 (call a.exe) else call b.exe 或 if %%a equ 1 (call b.exe) else call a.exe
第 3 楼
test.exe
发表于 2009-09-15 05:49 · 中国 北京 鹏博士BGP
新手上路
★
积分 10
发帖 6
注册 2007-08-16 16:51
UID 95262
性别 男
状态 离线
test.exe的源码如下:
unsigned char main(void)
{
unsigned char value=0;
value=inport(0x1e8);
return value;
}
刚才试了一下返回值:
for /f %%a in(test.exe) do echo %%a
报语法错误
[ Last edited by kaixin1228 on 2009-9-15 at 05:56 ]
第 4 楼
发表于 2009-09-15 06:05 · 中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
你可以这样试一下看:
test.exe>nul 2>nul
if %ERRORLEVEL% equ 0 (echo 返回0或默认为0) else echo 成功返回1
pause
测试成功以后再改成:
test.exe>nul 2>nul
if %ERRORLEVEL% equ 0 (call a.exe) else call b.exe
[
Last edited by Hanyeguxing on 2009-9-15 at 06:07 ]
第 5 楼
发表于 2009-09-15 06:14 · 中国 北京 鹏博士BGP
新手上路
★
积分 10
发帖 6
注册 2007-08-16 16:51
UID 95262
性别 男
状态 离线
第 6 楼
发表于 2009-09-15 06:40 · 中国 江西 南昌 电信
新手上路
★
积分 13
发帖 10
注册 2009-09-07 02:10
UID 151591
性别 男
状态 离线
CMD应该不会返回外部程序的%errorleve%吧
除非那个程序会返回errorlevel给CMD
比如 7Z的命令行 正确解压后就返回 0给 CMD
呵呵乱说的 我不太清楚的。
论坛跳转: