[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理不用临时文件,怎样实现2个cmd进程之间进行互动?

条件:不可以用临时文件
任务:实现一个按下f5就有rainbow效果,然后再按下f5就会恢复正常

你可以用类似ckey的第3方程序~
大概代码是这样的,但是就是卡在互动那边
  1. @echo off
  2. if "%1"=="color" goto b
  3. start /b "" "%~0" color
  4. echo.
  5. echo Rainbow效果批处理
  6. echo.
  7. echo 按下F5来启用/禁止rainbow效果
  8. exit
  9. :b
  10. ckey 116
  11. :c
  12. color 07&sleep 100
  13. color 09&sleep 100
  14. color 0a&sleep 100
  15. color 0b&sleep 100
  16. color 0c&sleep 100
  17. color 0d&sleep 100
  18. color 0e&sleep 100
  19. color 0f&sleep 100
  20. goto b
复制代码
问题:现在俺这个代码只是 能在执行完color命令后回到“随时待命”的状态,如果检测到f5就执行color任务,再回去“随时待命”的状态~

但是俺要的是在用户按了F5后就一直执行color命令,直到再检测到F5,就停止执行。

其实用临时文件可以解决这个问题的,但是俺不要临时文件~

所以只要能实现既不用临时文件,又能让2个cmd进程之间进行互动,就能用if来解决这个问题~ 问题就能解决~

现在的问题:跨cmd进程进行互动,方法不限,但是不能用临时文件。
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

这个发到挑战区要求有点低了吧;

启动新的进程,或改注册表,改系统日期的,皆可实现;

倒是用非日期时间变量来通信 很难做到。。

TOP

回复 2# plp626


    新的进程?具体方法?我就是想不到方法了啦~
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

  1. @echo off
  2. if "%~1"=="" (start /b "" "%~f0" 123) else (title test&goto :loop2)
  3. :loop1
  4. if "%mode%"=="1" (cls&echo %time%)
  5. if not "%fz%"=="%~z0" set fz=%~z0&set /a mode=1-mode
  6. goto :loop1
  7. :loop2
  8. pause>nul
  9. set /p a=a<nul>>"%~f0"
  10. goto :loop2
  11. Data
复制代码
想到一个不用“临时文件”的办法。。。
1

评分人数

第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 4# defanive


    不错的思路,不过这句“ set /p a=a<nul>>"%~f0" ”是什么意思呢?不是很明白啊~ 然后我按了pause后会显示找不到loop2a
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

本帖最后由 raymai97 于 2011-8-20 07:51 编辑

回复 4# defanive


    哦我明白了,对不起,我刚才忘记把你的data也复制了,现在没有问题了~

厉害下,其实你是用%~z0来对话,也就是文件的大小,只不过这样会造成批处理的后端越来越大个~
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

返回列表