标题: [其他] 批处理不用临时文件,怎样实现2个cmd进程之间进行互动? [打印本页]
作者: raymai97 时间: 2011-8-19 23:11 标题: 批处理不用临时文件,怎样实现2个cmd进程之间进行互动?
条件:不可以用临时文件
任务:实现一个按下f5就有rainbow效果,然后再按下f5就会恢复正常
你可以用类似ckey的第3方程序~
大概代码是这样的,但是就是卡在互动那边- @echo off
- if "%1"=="color" goto b
- start /b "" "%~0" color
- echo.
- echo Rainbow效果批处理
- echo.
- echo 按下F5来启用/禁止rainbow效果
- exit
- :b
- ckey 116
- :c
- color 07&sleep 100
- color 09&sleep 100
- color 0a&sleep 100
- color 0b&sleep 100
- color 0c&sleep 100
- color 0d&sleep 100
- color 0e&sleep 100
- color 0f&sleep 100
- goto b
复制代码
问题:现在俺这个代码只是 能在执行完color命令后回到“随时待命”的状态,如果检测到f5就执行color任务,再回去“随时待命”的状态~
但是俺要的是在用户按了F5后就一直执行color命令,直到再检测到F5,就停止执行。
其实用临时文件可以解决这个问题的,但是俺不要临时文件~
所以只要能实现既不用临时文件,又能让2个cmd进程之间进行互动,就能用if来解决这个问题~ 问题就能解决~
现在的问题:跨cmd进程进行互动,方法不限,但是不能用临时文件。
作者: plp626 时间: 2011-8-19 23:32
这个发到挑战区要求有点低了吧;
启动新的进程,或改注册表,改系统日期的,皆可实现;
倒是用非日期时间变量来通信 很难做到。。
作者: raymai97 时间: 2011-8-20 01:01
回复 2# plp626
新的进程?具体方法?我就是想不到方法了啦~
作者: defanive 时间: 2011-8-20 03:45
- @echo off
- if "%~1"=="" (start /b "" "%~f0" 123) else (title test&goto :loop2)
- :loop1
- if "%mode%"=="1" (cls&echo %time%)
- if not "%fz%"=="%~z0" set fz=%~z0&set /a mode=1-mode
- goto :loop1
- :loop2
- pause>nul
- set /p a=a<nul>>"%~f0"
- goto :loop2
- Data
复制代码
想到一个不用“临时文件”的办法。。。
作者: raymai97 时间: 2011-8-20 07:43
回复 4# defanive
不错的思路,不过这句“ set /p a=a<nul>>"%~f0" ”是什么意思呢?不是很明白啊~ 然后我按了pause后会显示找不到loop2a
作者: raymai97 时间: 2011-8-20 07:46
本帖最后由 raymai97 于 2011-8-20 07:51 编辑
回复 4# defanive
哦我明白了,对不起,我刚才忘记把你的data也复制了,现在没有问题了~
厉害下,其实你是用%~z0来对话,也就是文件的大小,只不过这样会造成批处理的后端越来越大个~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |