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

时间:2011-04-04 03:35:02

标签: batch-file

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

5 个答案:

答案 0 :(得分:12)

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

  1. 使用start命令运行第一个程序。

  2. 在循环中检查任务列表以查看程序是否出现在那里。

  3. 对上述循环施加一些时间限制。

  4. 如果成功则运行下一个程序,否则退出通知。

  5. 脚本可能如下所示:

    @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
    

    请记住,时间不准确,特别是如果要在任务列表检查之间插入延迟。

答案 1 :(得分:12)

我需要同样的事情,并发现以下事情按预期工作:

start D:\Michal\Xming\Xming.exe -multiwindow
start D:\Michal\Xming\putty.exe
start D:\Michal\WinSCP\WinSCP.exe

这一切都保存在Login.bat文件中。

顺便说一下,我正在运行Win7,但我怀疑这有什么影响。

答案 2 :(得分:8)

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

我创建了以下批处理文件,每当我在办公室打开笔记本电脑时,只需单击一下即可打开相关程序。 将此文件保存在Desktop并创建了一个文件夹,我将所有快捷方式都放在相关程序中。 因此,我在批处理文件中运行这些快捷方式,如下所示:

@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

答案 3 :(得分:3)

我还发现了一个小小的黑客攻击,只需使用带-n开关的ping命令,如下所示:

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

答案 4 :(得分:0)

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

这是我桌面上的“Work Start.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 打开了资源管理器 我杀死了 cmd.exe,因为它打开并由于应用程序行为不良而保持打开状态。 其余的我杀了,这样他们就可以移到后台了。

这是我的“Work End.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 的好处是它们要求在下次启动时恢复,所以我可以从上次停止的地方继续,假设我保存了所有内容。 如果我不强行杀死它们,它们就会留在后台,如果我使用十字架关闭它们,它们不会让我从我中断的地方开始。

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

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