command line - Windows batch-file that continues after launching each program

06
2013-12
  • Sandy

    I'm trying to create a very simple Windows-XP batch file:

    Program1.exe
    Sleep 3
    Program2.exe
    Sleep 5
    Program3.exe
    Sleep 11
    

    Of course, I don't want to have to exit each program, before the next one starts. The default for batch files seems to be "stop until the previous program exists".

    The three executables listed above are program like Notepad: They open and run and don't just "open, run, close".

    How do I get this script to run as expected?

  • Answers
  • csrowell

    Another suggestion: If you are putting your program in quotes because there are spaces in the path to the exe, you need to do this:

    start "" "C:\myPath\myApp.exe"
    

    Found it here: Run Windows application from Command Prompt

  • vcsjones

    Use the Start command. Change your batch to this:

    Start Program1.exe
    Sleep 3
    Start Program2.exe
    Sleep 5
    Start Program3.exe
    Sleep 11
    
  • snowdude

    Try using JScript instead. Create a file called run_programs.js that looks something like this:

    var objShell = new ActiveXObject("WScript.Shell");
    
    objShell.run( "Program1.exe",  1, false);
    objShell.run( "Program2.exe",  1, false);
    objShell.run( "Program3.exe",  1, false);
    

    Then change your batch file to simply execute the script, e.g.

    cscript //I //E:Jscript run_programs.js
    

  • Related Question

    windows - Batch script halts after Thunderbird is opened
  • Željko Filipin

    I want to be able to open Thunderbird from a batch script in Windows. I can do it just fine from command line:

    C:\>"C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
    

    If I create a batch script that looks like this:

    "C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
    

    and execute it from the command line:

    C:\>t.cmd
    C:\>"C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
    

    Thunderbird opens, but the script halts (it does not exit).

    If I close Thunderbird by hand, the script exits.

    It has been a while since I have used batch scripts. Am I doing something wrong?

    Edit: script exits just fine if Thunderbird is already opened. Strange.


  • Related Answers
  • admintech

    Try

    start /d "C:\Program Files\Mozilla Thunderbird" thunderbird.exe

  • David Spillett

    As Systech suggests, the start command is what you are looking for to run the program and not wait for it to terminate before continuing.

    The reason you see different behaviour when Thunderbird is already running is that it is only allowing one copy to run. The second copy detects the first and gives it focus before going away (so effectively immediately returning control to your batch script). If you were calling an application that allows multiple instances of itself to run (something as simple as notepad would do if you want to test this to see for yourself) you would not see that difference in behaviour.

  • ChrisF

    The reason the script stalls is because it's waiting for Thunderbird to complete and return control to the batch file.

    You need to use the "/d" option as Systech suggests.

  • daddy-o

    FWIW this doesn't work properly in windows7. Even with start /b, Thunderbird terminates when the controlling shell window terminates.

    That said, once you've got T'bird running, you can open other subwindows properly (e.g., thunderbird -addressbook) from the command line.

  • daddy-o

    So, if you want to run T'bird from a windows command line or batch file, I've figured out how to do it. As you probably have noticed, using the start command with any combination of parameters doesn't do what you really want.

    The first step is to create a Windows Scripting Host command file. Put this in the same directory as your T'bird executable, can call it something like tbird.wsf:

    <job>
    <script language="VBScript">
    Set WshShell = CreateObject("WScript.Shell")
    cmds=WshShell.RUN("cmd /c thunderbird.exe", 0, False)
    </script>
    </job>
    

    once you have that file, then invoke it from command line or batch file like this:

    cscript tbird.wsf
    

    Of course, this will leave an extra process hanging around your system that won't die until you close T'bird down. But this does achieve what I think lots of people want.

    davodavo -- check me out on www.saleslogistix.com