中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-13 22:38
47,812 主题排行 / 349,916 发帖 / 今日 0 篇 / 48,268 会员排行
论坛回收站 » 请高手帮忙,改写一个批处理
可打印版本  2,035 / 5
第1楼 kaixin1228 发表于 2009-09-15 04:48
新手上路 发帖 6 积分 10
请高手帮忙,改写一个批处理
我想写一个批处理文件,需求如下:
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楼 Hanyeguxing 发表于 2009-09-15 05:08
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
批处理读取的返回代码只能是%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楼 kaixin1228 发表于 2009-09-15 05:49
新手上路 发帖 6 积分 10
test.exe
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楼 Hanyeguxing 发表于 2009-09-15 06:05
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
你可以这样试一下看:

测试成功以后再改成:


[ Last edited by Hanyeguxing on 2009-9-15 at 06:07 ]
第5楼 kaixin1228 发表于 2009-09-15 06:14
新手上路 发帖 6 积分 10
报Syntax error
第6楼 904055262 发表于 2009-09-15 06:40
新手上路 发帖 10 积分 13
CMD应该不会返回外部程序的%errorleve%吧
除非那个程序会返回errorlevel给CMD

比如 7Z的命令行 正确解压后就返回 0给 CMD

呵呵乱说的 我不太清楚的。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023