Board logo

标题: 无临时文件的CMD通信 [打印本页]

作者: pusofalse     时间: 2008-6-2 05:13    标题: 无临时文件的CMD通信
通宵。。。 终于熬出一段代码 不知可否作为CMD通信之用。。。
记得以前有朋友发过一贴说 同时运行a.bat和b.bat b运行的内容是根据a运行到哪条命令得来的
举个例子说 如果a还没有运行到net user命令,b就不会往下执行,而是在标签内循环。。。 直到a运行了net user b才会跳出循环往下执行~





@echo off&setlocal enabledelayedexpansion

if "%1" neq "" goto lp1
start/b %~s0 1
:lp
cmd/c "net user>>main.txt&exit 6"
cmd/c "ping 127.1 /n 2 >nul&netstat -ano>>main.txt&exit 7"
:lp1
if errorlevel 6 (echo net user 命令已经完成>>main.txt) else echo net user 命令还没有完成>>main.txt
if errorlevel 7 (echo netstat命令已经完成>>main.txt) else echo netstat命令还没有完成>>main.txt
if not errorlevel 6 if not errorlevel 7 ping 127.1 /n 0 >nul&goto lp1
echo SUCCEED
pause


以上代码完全错误~- -||| 请不要再跟帖了!

Last edited by pusofalse on 2008-6-2 at 02:00 PM ]

作者: plp626     时间: 2008-6-2 06:40
精神可嘉,加15分

作者: plp626     时间: 2008-6-2 06:41
晕竟然没分了,下次加上

作者: plp626     时间: 2008-6-2 07:32
有段时间没来此地,都忘了不少东西。
我再次思考了下,还是觉得楼主不要在这errorlevel上花费精力。。。

某个东西能否作为进程之间通信载体的关键就是看,这个东西----载体,在一个进程里发生改变后,另一个进程能否被感知,

顺着这个思路,判断某个东西是否能作为通信载体,最简洁的方法就是开两个cmd(start/b也是启动了两个或多个cmd只是共用了一个窗口)在一个cmd上让它改变,看另一个cmd 上看有没变化。
那现在看这个errorlevel
exit/b 5其实就是改变了errorlevel的值,他和set errorevel=5的效果一样,所以它和一般的变量没有本质区别,它的改变还是不能让另一个cmd感知。

作者: plp626     时间: 2008-6-2 08:21
以下现象是我昨天看楼主帖子的收获,但是我还是要说,
不要被它迷惑了,
call不会增加进程,没有start始终是单任务。