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

[文件操作] 跪求帮忙完善顺序运行多个bat代码小程序

我现在有4个bat小程序,每天都要运行这个4个bat程序,以往都是每天先点第一个运行程序,等第一个运行完毕之后再点第二个,依次类推,我现在想做一个链接程序,只需要点击一下,四个程序按照顺序进行运行,只有等到第一个运行完毕之后,第二个程序然后再开始运行,以此类推,运行顺序不能有误。非常感谢。

目前已经初步尝试写的代码如下,求哪位大神给帮忙修改下,非常感谢。
  1. @echo off
  2. start /wait D:\日结算数据\blat262\full\1-复制结算单.bat
  3. start /wait D:\日结算数据\blat262\full\2-制作结算单.bat
  4. start /wait D:\日结算数据\blat262\full\3-生成结算数据包.bat
  5. start /wait D:\日结算数据\blat262\full\邮件发送.bat
  6. pause
复制代码

有啥问题?

TOP

回复 2# flyinnet9

这个代码不知道怎么回事 运行过程中  有时候第一个程序运行完毕之后  然后不运行第二个程序了,是不是代码哪写的有问题

TOP

没啥问题,不行用call命令试下呗

TOP

回复 4# flyinnet9
老师,请帮忙用CALL文件命令帮忙给修改下吧,修改完之后,我再试试效果,看看哪个会更加流畅。

TOP

你可以试试管道命令符
start 第一个程序 && start 第二个程序 && 第三个程序 && 第四个程序
前面的成功了才执行下一个
中间加点时间延迟,防止电脑反应不过来。ping choice随便哪个都可以.

@echo off
start /wait D:\日结算数据\blat262\full\1-复制结算单.bat
ping -n 3 127.0.0.1
start /wait D:\日结算数据\blat262\full\2-制作结算单.bat
ping -n 3 127.0.0.1
start /wait D:\日结算数据\blat262\full\3-生成结算数据包.bat
ping -n 3 127.0.0.1
start /wait D:\日结算数据\blat262\full\邮件发送.bat
pause
----------------------------------------------
或者你的第一个1-复制结算单.bat里边运行到最后卡住了。发生了错误卡住了。 /wait就一直在等它完成。但是它卡住了,所以一直在等,下一个bat就没运行机会。
-----------------------------------------------
或者第二的bat运行的条件不成立,你里边有if判断的话,条件不成立。也无法运行下一个。
这个问题需要你的四个bat的内容,然后根据你的运行情况设计一个优化的bat。既能显示错误在哪,又能执行相应方案修复错误,从而智能完成你的任务。

TOP

回复 6# happy886rr


    老师,下面是我四个BAT的内容,麻烦您帮忙设计一个优化的bat吧,做一个小程序能调用四个bat按照顺序依次运行,真的非常非常感谢您!!
第一个Bat内容:
copy /-y D:\结算单备份\%date:~0,4%%date:~5,2%%date:~8,2%\*.txt D:\日结算数据\结算单
pause

第二个BAT内容
copy 结算单\000005.txt 结算单\MD\.&       
copy 结算单\000007.txt 结算单\ZB\.&       
copy 结算单\000011.txt 结算单\ZB\.&       
copy 结算单\000023.txt 结算单\ZB\.&       
copy 结算单\000026.txt 结算单\ZB\.&       

第三个bat内容
rar a 结算数据\结算数据华北 汇总持仓\华北.xlsx -HPJSSJ2011fk
rar a 结算数据\结算数据华东 汇总持仓\华东.xlsx -HPJSSJ2011fk
rar a 结算数据\结算数据华南 汇总持仓\华南.xlsx -HPJSSJ2011fk
rar a 结算数据\结算数据西北 汇总持仓\西北.xlsx -HPJSSJ2011fk
rar a 结算数据\结算数据北京 结算单\bj -HPJSSJ2011fk
rar a 结算数据\结算数据北京 中储\200158.txt -HPJSSJ2011fk

第四个BAT内容:
@echo off
pause
pause

:::::::::::::: 系统参数设置----以下勿动::::::::::::::
set subj=%date:~0,10%
set from=fk@wdqh.com
set user=fk@wdqh.com
set pass=fk654321
set mail=1.txt
set server=smtp.exmail.qq.com
set debug=-debug -log blat.log -timestamp
:::::::::::::: 系统参数设置----以上勿动::::::::::::::

:::::::::::::: 设置邮件内容::::::::::::::
set tobj=kangxy@wbqh.com
set atbj=d:\日结算数据\结算数据\结算数据北京.rar
blat %mail% -to %tobj% -base64 -charset Gb2312 -subject %subj%  -server %server% -f %from% -u %user% -pw %pass% -attach %atbj% %debug%

以上就是4个bat的内容,希望老师能帮忙给优化设计一个调动的bat程序,让这四个程序按照顺序运行,这4个bat程序内容有时候会变动,所以只能设计一个调用程序,调用四个程序。非常非常感谢!!

TOP

本帖最后由 happy886rr 于 2016-3-8 15:12 编辑

电脑得有rar环境变量添加到path里
先复制几个文件单独实验一下,没问题后再实际操作,以免造成数据损失。
  1. @echo off
  2. REM 设置延时 秒
  3. set dtime=3
  4. CALL D:\日结算数据\blat262\full\1-复制结算单.bat
  5. ping -n %dtime% 127.0.0.1 >NUL
  6. if exist D:\日结算数据\结算单\%date:~0,4%%date:~5,2%%date:~8,2%\*.txt (
  7. CALL D:\日结算数据\blat262\full\2-制作结算单.bat
  8. ping -n %dtime% 127.0.0.1 >NUL
  9. if exist  结算单\MD\.&\000026.txt (
  10. rar 1>NUL 2>NUL || echo ---^>rar压缩环境缺失 && pause>nul && exit
  11. CALL D:\日结算数据\blat262\full\3-生成结算数据包.bat
  12. ping -n %dtime% 127.0.0.1 >NUL
  13. if exist 结算数据\结算数据北京\结算数据北京.rar (
  14. echo 开始发送邮件
  15. echo ------------------------------
  16. CALL 日结算数据\blat262\full\邮件发送.bat
  17. echo 执行完毕!
  18. echo ------------------------------
  19. ) else (
  20. echo 生成结算数据包-^>执行错误
  21. )
  22. ) else (
  23. echo 制作结算单-^>执行错误
  24. )
  25. ) else (
  26. echo 复制结算单-^>执行错误
  27. )
  28. pause
复制代码
回复 7# xin_fei_
1

评分人数

    • xin_fei_: 真的非常感谢老师技术 + 1

TOP

回复 8# happy886rr

非常感谢老师,真的非常感谢,给您点赞!!

TOP

回复 9# xin_fei_


    不客气,你试试看有什么问题。我没测试过。不知道是否完成了你的任务。

TOP

如果happy886rr的代码可以实现你的要求,那就最好了
对于你原来写的批处理,我有几个猜想,有兴趣你可以试下
第一个批处理内容,把 pause 改为 exit ,应该就可以进行到下一个批处理了。
第二个批处理中的&感觉有点怪怪的,不过你原来就可以正常运行的话,就不用管了。
第四个批处理开头的两个pause感觉可以取消掉。

TOP

去掉4个原bat里的pause,,顺序复制到一个文本,每个之间用几个空行来区分,变为一个bat,既便于修改,使用也是方便的。
目的,学习批处理

TOP

返回列表