Board logo

标题: [文本处理] 求助,如何逐条延时处理bat命令 [打印本页]

作者: 寒门小侠    时间: 2020-8-6 16:08     标题: 求助,如何逐条延时处理bat命令

由于有大量的bat命令,且在公司,所以,只能提供一个简单的样本
这是样本,实际上有很多条命令。

*********************************************

要实现的功能或效果如图,也就是每条都延时执行

####################################

最终的格式要是这样子

要求就是,不能在指令中间插入其它指令,不能打乱指令的顺序,只能在开头加入指令,实现下面的指令之间延时执行。
我找遍了都没找到相关资料,没头绪了,谢谢各位大神
作者: hlzj88    时间: 2020-8-6 22:53

一个要求首先要有其存在的现实需求的理由,以及实现的难度。
难度,仅目前我所知的bat代码是不可以在不修改源码的基础上实现你要的要求。即便是专门有个bat来读取原bat的内容临时实现读一句就插入一个延时的功能,也只是一个暗中过度的办法。也有部分源码是不可以在其中临时插入。所以,如果强求插入延时,会导致原bat功能失效。
处处延时需求的本意是什么,让电脑休息吗,不是理由。等待别人的工作进行结果同步吗,需要专门的同步语句才可以,不是简单延时就可解决的。因此处处延时并不是实际的需求。如果很需要一个延时,最佳方案是在一个独立的bat源码后加入一个足够时长的延时,起码原bat的功能不会失效。
作者: Batcher    时间: 2020-8-7 00:07

回复 2# hlzj88


猜测楼主想要这个效果:
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /n "^:OriginalScript$" "%~f0"') do (
  3.     call :ExecScript %%i
  4. )
  5. goto :eof
  6. :ExecScript
  7. for /f "skip=%1 delims=" %%a in ('type "%~f0"') do (
  8.     %%a
  9.     timeout /t 1 >nul
  10. )
  11. goto :eof
  12. :OriginalScript
  13. echo 你好
  14. echo 你真好
  15. echo 你真的好
复制代码

作者: 寒门小侠    时间: 2020-8-7 12:42

回复 2# hlzj88

噢,我这个是有大量的指令文本,每个指令文本大概30条指令左右,每天使用的频率也挺高的,如果按照原先的工具的话,要耽误很多时间,需要调端口,波特率等等,但是如果用bat这样处理,直接调用 adb,一键发送指令,原先需要30秒,现在只要3秒。
作者: 寒门小侠    时间: 2020-8-7 12:45

回复 3# Batcher


    感谢大神,这个真的可以欸,好开心,请问实现原理是啥?如果我需要0.1S秒的延时的话,又该怎么实现?因为如果每条1秒的延时的话,等待时间有点长。。。。
作者: 寒门小侠    时间: 2020-8-7 12:49

回复 5# 寒门小侠


    大佬,请问怎么实现?如果完全没有延时的话,会导致设备接受指令后来不及执行指令会异常
作者: Batcher    时间: 2020-8-7 15:16

回复 5# 寒门小侠


第10行的timout命令的最小单位是1秒,需要找其他方法实现。
作者: qixiaobin0715    时间: 2020-8-7 16:26

本帖最后由 qixiaobin0715 于 2020-8-7 16:40 编辑

要是能把计时单位设置成毫秒应当就能解决。
作者: Batcher    时间: 2020-8-7 17:19

回复 5# 寒门小侠
  1. @echo off
  2. > "%temp%\MySleep.vbs" echo WScript.Sleep 100
  3. for /f "delims=:" %%i in ('findstr /n "^:OriginalScript$" "%~f0"') do (
  4.     call :ExecScript %%i
  5. )
  6. goto :eof
  7. :ExecScript
  8. for /f "skip=%1 delims=" %%a in ('type "%~f0"') do (
  9.     %%a
  10.     REM 大约延时0.1秒(不是特别精确)
  11.     cscript //nologo "%temp%\MySleep.vbs"
  12. )
  13. goto :eof
  14. :OriginalScript
  15. echo 你好
  16. echo 你真好
  17. echo 你真的好
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2