标题: [特效代码] 制造一个逻辑,让N个同时开的批处理依次运行,而不是并行 [打印本页]
作者: jzsgyml 时间: 2012-4-8 15:26 标题: 制造一个逻辑,让N个同时开的批处理依次运行,而不是并行
现在10个批处理,1.bat。2.bat。3.bat。4.bat.....,代码均是复制代码
复制代码
复制代码
类推。
因为网站不断有数据返回,也就是不断需要发送生成值到abc.exe,但是如果同一时刻N个批处理同时调用,由于批处理发送的值不同,造成abc.exe返回值混乱,而且abc.exe涉及系统调用,不能同时在不同文件夹运行。
所以看看再执行到abc.exe这个位置前,是不是能加一些判断代码,让不同批处理到这个位置,暂停,然后依次执行abc.exe,
如何判断前一个bat运行完了呢?我感觉可以让前一个运行abc.exe了再执行“echo a>a.txt"”,在a.txt加一行,之后的批处理发现a.txt多一行,就继续安排某个批处理执行。。
看看大家有什么具体点的逻辑判断方法,谢谢。
作者: find 时间: 2012-4-8 15:30
- @echo off
- for /l %%a in (1,1,10) do (
- call %%a.bat
- )
复制代码
作者: jzsgyml 时间: 2012-4-8 15:51
find 发表于 2012-4-8 15:30
是这样的,网站不断有数据来,也就是不断在生成这样的1.bat,2.bat并且在执行类推,
每一个 abc.exe 2456464 后面的值是不同的,如果网络不频繁,肯定是一个个来的,如果高峰期,一秒就会并发很多bat,这就在前面加上自检查语句,看看当前是不是有程序在运行,没有就等待,那个批处理结束了,就执行
作者: gawk 时间: 2012-4-8 17:59
回复 3# jzsgyml
判断那一块,检查有几个cmd进程在运行可以不?
作者: powerbat 时间: 2012-4-8 21:24
bat效率低而且精度差,最好用编程实现。- call :mutexLock
- abc.exe 1111 >1.txt
- call :mutexUnlock
- goto :eof
-
-
- goto :eof
- :mutexLock
- if not exist "%temp%\abc.lock" (cd.>"%temp%\abc.lock" & goto :eof)
- ping.exe -n 1 -w 1000 192.1 >nul & goto :lock
- goto :eof
-
- goto :eof
- :mutexUnlock
- del "%temp%\abc.lock"
- goto :eof
复制代码
作者: jzsgyml 时间: 2012-4-9 17:32
回复 jzsgyml
判断那一块,检查有几个cmd进程在运行可以不?
gawk 发表于 2012-4-8 17:59
恩,假如同时并发执行了N个BAT,自检如果发现有运行的BAT,就等待,那都在那等待了。软件是N个BAT等待中,有个算法让他们依次执行
作者: jzsgyml 时间: 2012-4-9 17:35
bat效率低而且精度差,最好用编程实现。
powerbat 发表于 2012-4-8 21:24
有些启发,我整理整理思路
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |