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

[特效代码] 制造一个逻辑,让N个同时开的批处理依次运行,而不是并行

现在10个批处理,1.bat。2.bat。3.bat。4.bat.....,代码均是
  1. abc.exe 1111 >1.txt
复制代码
  1. abc.exe 2222 >2.txt
复制代码
  1. abc.exe 3333 >3.txt
复制代码
类推。

因为网站不断有数据返回,也就是不断需要发送生成值到abc.exe,但是如果同一时刻N个批处理同时调用,由于批处理发送的值不同,造成abc.exe返回值混乱,而且abc.exe涉及系统调用,不能同时在不同文件夹运行。

所以看看再执行到abc.exe这个位置前,是不是能加一些判断代码,让不同批处理到这个位置,暂停,然后依次执行abc.exe,

如何判断前一个bat运行完了呢?我感觉可以让前一个运行abc.exe了再执行“echo a>a.txt"”,在a.txt加一行,之后的批处理发现a.txt多一行,就继续安排某个批处理执行。。

看看大家有什么具体点的逻辑判断方法,谢谢。

  1. @echo off
  2. for /l %%a in (1,1,10) do (
  3.     call %%a.bat
  4. )
复制代码
早中晚各问自己一遍:你平均每周帮助别人解决几个问题?

TOP

find 发表于 2012-4-8 15:30



    是这样的,网站不断有数据来,也就是不断在生成这样的1.bat,2.bat并且在执行类推,
每一个 abc.exe 2456464  后面的值是不同的,如果网络不频繁,肯定是一个个来的,如果高峰期,一秒就会并发很多bat,这就在前面加上自检查语句,看看当前是不是有程序在运行,没有就等待,那个批处理结束了,就执行

TOP

回复 3# jzsgyml


    判断那一块,检查有几个cmd进程在运行可以不?

TOP

bat效率低而且精度差,最好用编程实现。
  1. call :mutexLock
  2. abc.exe 1111 >1.txt
  3. call :mutexUnlock
  4. goto :eof
  5. goto :eof
  6. :mutexLock
  7. if not exist "%temp%\abc.lock" (cd.>"%temp%\abc.lock" & goto :eof)
  8. ping.exe -n 1 -w 1000 192.1 >nul & goto :lock
  9. goto :eof
  10. goto :eof
  11. :mutexUnlock
  12. del "%temp%\abc.lock"
  13. goto :eof
复制代码

TOP

回复  jzsgyml


    判断那一块,检查有几个cmd进程在运行可以不?
gawk 发表于 2012-4-8 17:59



    恩,假如同时并发执行了N个BAT,自检如果发现有运行的BAT,就等待,那都在那等待了。软件是N个BAT等待中,有个算法让他们依次执行

TOP

bat效率低而且精度差,最好用编程实现。
powerbat 发表于 2012-4-8 21:24



    有些启发,我整理整理思路

TOP

返回列表