Batch file 如何使用批处理文件运行多个程序

Batch file 如何使用批处理文件运行多个程序,batch-file,Batch File,我喜欢使用批处理文件运行两个程序,但条件是,第二个程序必须在加载第一个程序后启动,因此有没有办法使用计时器控制程序启动的时间。基本上,您可以尝试这种方法(未经测试): 使用start命令运行第一个程序 检查循环中的任务列表,查看程序是否出现在那里 对所述循环施加一些时间限制 如果成功,运行下一个程序,否则退出并发出通知 脚本可能如下所示: @ECHO OFF START program1.exe FOR /L %%i IN (1,1,100) DO ( (TASKLIST | FIND /I

我喜欢使用批处理文件运行两个程序,但条件是,第二个程序必须在加载第一个程序后启动,因此有没有办法使用计时器控制程序启动的时间。

基本上,您可以尝试这种方法(未经测试):

  • 使用
    start
    命令运行第一个程序

  • 检查循环中的任务列表,查看程序是否出现在那里

  • 对所述循环施加一些时间限制

  • 如果成功,运行下一个程序,否则退出并发出通知

  • 脚本可能如下所示:

    @ECHO OFF
    START program1.exe
    FOR /L %%i IN (1,1,100) DO (
      (TASKLIST | FIND /I "program.exe") && GOTO :startnext
    
      :: you might add here some delaying
    )
    ECHO Timeout waiting for program1.exe to start
    GOTO :EOF
    
    :startnext
    program2.exe
    :: or START program2.exe
    
    @ECHO关闭
    启动program1.exe
    对于(1,1100)DO中的/L%%i(
    (任务列表| FIND/I“program.exe”)&&GOTO:startnext
    ::你可以在这里加一些
    )
    等待program1.exe启动的回显超时
    后藤:EOF
    :startnext
    program2.exe
    ::或启动program2.exe
    

    请记住,计时并不精确,特别是当您要在任务列表检查之间插入延迟时。

    我还发现了一个小技巧,只需使用ping命令和-n开关,如下所示:

    start /d "C:\Program Files (x86)\Mobile Partner\" MobilePartner.exe
    ping 127.0.0.1 -n 8
    start /d "F:\Other Applcations\System Tools\OS Tweak\" dragfullwindows.exe
    
    @ECHO off
    
    start C:\Users\User1\Desktop\Softwares\IE
    start C:\Users\User1\Desktop\Softwares\Googletalk
    start C:\Users\User1\Desktop\Softwares\YahooMessenger
    start C:\Users\User1\Desktop\Softwares\Program4
    start C:\Users\User1\Desktop\Softwares\Program5
    

    我认为这可能与此无关,但我想分享以下内容:

    我已经创建了以下批处理文件,并在我在办公室打开笔记本电脑时运行它,只需单击一下即可打开相关程序。 将此文件保存在桌面上,并创建了一个文件夹,在其中我放置了相关程序的所有快捷方式。 因此,我在批处理文件中运行以下快捷方式:

    start /d "C:\Program Files (x86)\Mobile Partner\" MobilePartner.exe
    ping 127.0.0.1 -n 8
    start /d "F:\Other Applcations\System Tools\OS Tweak\" dragfullwindows.exe
    
    @ECHO off
    
    start C:\Users\User1\Desktop\Softwares\IE
    start C:\Users\User1\Desktop\Softwares\Googletalk
    start C:\Users\User1\Desktop\Softwares\YahooMessenger
    start C:\Users\User1\Desktop\Softwares\Program4
    start C:\Users\User1\Desktop\Softwares\Program5
    

    我需要同样的东西,并发现以下东西如我所愿:

    start D:\Michal\Xming\Xming.exe -multiwindow
    start D:\Michal\Xming\putty.exe
    start D:\Michal\WinSCP\WinSCP.exe
    
    所有这些都保存在Login.bat文件中


    顺便说一句,我正在运行Win7,但我怀疑这是否有任何影响。

    我在Windows 10上写下了这个答案,现在是2021年。 这为newage程序提供了更多的思路,应该在任务栏(后台)上运行

    这是我桌面上的“工作开始.bat”批处理文件:

    rem   Work Start Batch Job from Desktop
    rem   Launchs All Work Apps
    @echo off
    rem start "Start VS Code" "C:\Users\yourname\AppData\Local\Programs\Microsoft VS Code\code.exe"
    start "Start OneDrive" "C:\Users\yourname\AppData\Local\Microsoft\OneDrive\OneDrive.exe"
    start  "Start Google Sync" "C:\Program Files\Google\Drive\GoogleDriveSync.exe"
    start "Start Clipboard" "C:\Program Files\Beyond Compare 4\BCClipboard.exe"
    start "Start Cisco AnyConnect" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
    start chrome
    start firefox
    start skype
    start "Start Teams" "C:\Users\yourname\AppData\Local\Microsoft\Teams\current\Teams.exe" /MIN
    start Slack
    start Zoom
    sleep 10
    taskkill /IM "explorer.exe"
    taskkill /IM "teams.exe"
    taskkill /IM "skype.exe"
    taskkill /IM "slack.exe"
    taskkill /IM "zoom.exe"
    taskkill /IM "cmd.exe"
    @echo on
    
    一些应用程序无法使用简单的“启动应用程序”命令启动,因此我使用了完整路径。 由于某些原因,有些是在我的用户appdata文件夹中找到的,而不是在程序文件中,我不理解程序存储的这种行为,这是没有意义的

    我使用了延时,以便在使用taskkill命令将应用程序发送到后台之前,应用程序可以完全启动 我杀死了explorer.exe,因为OneDrive打开了explorer 我杀死了cmd.exe,因为它打开了,并且由于应用程序表现不好而保持打开状态。 其余的我杀了,这样他们就可以转移到背景中去了

    这是我的“工作结束.bat”批处理文件,用于强制关闭所有内容:

    rem   Work End Batch Job from Desktop
    rem   Forcibly Closes All Work Apps
    @echo off
    taskkill /f /IM OneDrive.exe
    taskkill /f /IM GoogleDriveSync.exe
    taskkill /f /IM BCClipboard.exe
    taskkill /f /IM "vpnui.exe"
    taskkill /f /IM "chrome.exe"
    taskkill /f /IM "firefox.exe"
    taskkill /IM "explorer.exe"
    taskkill /f /IM "teams.exe"
    taskkill /f /IM "skype.exe"
    taskkill /f /IM "slack.exe"
    taskkill /f /IM "zoom.exe"
    @echo on
    
    我必须确保已保存所有工作,并且文件不再同步。 可能我需要一个批处理文件,它会杀死除文件同步之外的所有东西。 强制杀掉Chrome和firefox的好处是,它们要求在下一次启动时恢复,这样我就可以继续我停止的地方,假设我保存了所有东西。 如果我不强行杀死它们,它们会留在背景中,如果我用十字架接近它们,它们不会让我从我离开的地方开始

    然后我可以在另一个批处理文件中启动我的游戏文件,但这将类似于第一个文件


    现在,我可以关闭默认的“启动”应用程序并使用此“Work Start.bat”,因为当我启动电脑只是为了玩游戏时,启动应用程序会让我很烦恼。

    在批处理文件中无法执行此操作,因为批处理文件会阻塞,直到当前命令完成。我建议你编写一个包装器应用程序来启动这两个程序。@Joey:没错,但有点短:-)你可以使用
    start
    或pipes,或者如果程序是windows exe,它就可以正常工作。