Board logo

标题: 请高手帮忙,改写一个批处理 [打印本页]

作者: kaixin1228     时间: 2009-9-15 04:48    标题: 请高手帮忙,改写一个批处理

我想写一个批处理文件,需求如下:
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 ]
作者: Hanyeguxing     时间: 2009-9-15 05:08
批处理读取的返回代码只能是%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
作者: kaixin1228     时间: 2009-9-15 05:49    标题: 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 ]
作者: Hanyeguxing     时间: 2009-9-15 06:05
你可以这样试一下看:
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 ]
作者: kaixin1228     时间: 2009-9-15 06:14
报Syntax error
作者: 904055262     时间: 2009-9-15 06:40
CMD应该不会返回外部程序的%errorleve%吧
除非那个程序会返回errorlevel给CMD

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

呵呵乱说的 我不太清楚的。