标题: [文本处理] 求助,如何逐条延时处理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
猜测楼主想要这个效果:- @echo off
- for /f "delims=:" %%i in ('findstr /n "^:OriginalScript$" "%~f0"') do (
- call :ExecScript %%i
- )
- goto :eof
-
- :ExecScript
- for /f "skip=%1 delims=" %%a in ('type "%~f0"') do (
- %%a
- timeout /t 1 >nul
- )
- goto :eof
-
- :OriginalScript
- echo 你好
- echo 你真好
- 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# 寒门小侠 - @echo off
- > "%temp%\MySleep.vbs" echo WScript.Sleep 100
- for /f "delims=:" %%i in ('findstr /n "^:OriginalScript$" "%~f0"') do (
- call :ExecScript %%i
- )
- goto :eof
-
- :ExecScript
- for /f "skip=%1 delims=" %%a in ('type "%~f0"') do (
- %%a
- REM 大约延时0.1秒(不是特别精确)
- cscript //nologo "%temp%\MySleep.vbs"
- )
- goto :eof
-
- :OriginalScript
- echo 你好
- echo 你真好
- echo 你真的好
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |