Hoe kan ik een programma uit een batchbestand uitvoeren zonder de console open te laten nadat het programma start?

Voor het moment dat mijn batch-bestand er zo uitziet:

myprogram.exe param1

Het programma start maar het DOS-venster blijft open. Hoe kan ik het sluiten?


Antwoord 1, Autoriteit 100%

U kunt het EXIT-trefwoord gebruiken. Hier is een voorbeeld van een van mijn batchbestanden:

start myProgram.exe param1
exit

Antwoord 2, Autoriteit 160%

Gebruik de opdracht Start om te voorkomen dat het batchbestand wacht op het programma. Vergeet niet om een ​​leeg dubbele quote voor het programma te plaatsen dat u wilt uitvoeren na “Start”.
Als u bijvoorbeeld Visual Studio 2012 uit een batchopdracht wilt uitvoeren:

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

Let op het dubbele citaat na het begin.


Antwoord 3, Autoriteit 31%

Bekijk de opdracht Start, kunt u dit doen:

START rest-of-your-program-name

Dit batch-bestand zal bijvoorbeeld wachten totdat Kladblok verlaat:

@echo off
notepad c:\test.txt

Dit is echter niet:

@echo off
start notepad c:\test.txt

Antwoord 4, Autoriteit 18%

Van mijn eigen vraag :

start /b myProgram.exe params...

Werkt als u het programma start vanaf een bestaande DOS-sessie.

Zo niet, bel een VB-script

wscript.exe invis.vbs myProgram.exe %*

De Windows-script host-run () methode neemt:

  • Intwindowstyle: 0 betekent “onzichtbare ramen”
  • BWAITONRETURN: FALSE betekent dat uw eerste script niet hoeft te wachten op uw tweede script om
  • te voltooien

Hier is invis.vbs:

set args = WScript.Arguments
num = args.Count
if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if
sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

Antwoord 5, Autoriteit 12%

Dit is het enige dat voor mij werkte toen ik probeerde een Java-klasse uit een batchbestand te rennen:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

U kunt de Start-opdracht aanpassen zoals u wilt voor uw project, door de juiste syntaxis te volgen:

Syntax
      START "title" [/Dpath] [options] "command" [parameters]
Key:
   title      : Text for the CMD window title bar (required)
   path       : Starting directory
   command    : The command, batch file or executable program to run
   parameters : The parameters passed to the command
Options:
   /MIN       : Minimized
   /MAX       : Maximized
   /WAIT      : Start application and wait for it to terminate
   /LOW       : Use IDLE priority class
   /NORMAL    : Use NORMAL priority class
   /HIGH      : Use HIGH priority class
   /REALTIME  : Use REALTIME priority class
   /B         : Start application without creating a new window. In this case
                ^C will be ignored - leaving ^Break as the only way to 
                interrupt the application
   /I         : Ignore any changes to the current environment.
   Options for 16-bit WINDOWS programs only
   /SEPARATE   Start in separate memory space (more robust)
   /SHARED     Start in shared memory space (default)

Antwoord 6, autoriteit 11%

Je zou dit eens moeten proberen. Het start het programma zonder venster. Het flitst eigenlijk een seconde, maar verdwijnt vrij snel.

start "name" /B myprogram.exe param1

Antwoord 7, autoriteit 9%

Hoe “ruimteprobleem” en lokale afhankelijkheden op te lossen:

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit

Antwoord 8, autoriteit 2%

Er zijn al heel veel antwoorden op deze vraag, maar ik plaats dit om iets belangrijks te verduidelijken, hoewel dit misschien niet altijd het geval is:

Start "C:\Program Files\someprog.exe"

Kan in sommige Windows-versies problemen veroorzaken, omdat Starteigenlijk verwacht dat de eerste set aanhalingstekens een Windows-titel is. Het is dus het beste om eerst een opmerking of een lege opmerking dubbel te citeren:

Start "" "C:\Program Files\someprog.exe"

of

Start "Window Title" "C:\Program Files\someprog.exe"

Antwoord 9

Mijn oplossing om dit vanuit de GUI te doen:

  1. Maak een snelkoppeling naar het programma dat u wilt uitvoeren;

  2. Bewerk de eigenschappen van de snelkoppeling;

  3. Verander het veld TARGETin %COMSPEC% /C "START "" "PROGRAMNAME"";

  4. Verander het veld RUNin geminimaliseerd.

Klaar! Kijk hoe je het leuk vindt…

PS: Programmaparameters kunnen tussen de twee laatste aanhalingstekens worden ingevoegd; de tekenreeks PROGRAMNAMEkan een bestandsnaam, een relatief of een absoluut pad zijn — als je een absoluut pad invoert en de stationsletter en puntkomma wist, werkt dit op een USB-stick, welke letter dan ook de hostcomputer eraan toewijst… (ook als u de snelkoppeling in dezelfde map plaatst en de bestandsnaam van het programma in PROGRAMNAMEvoorafgaat aan de variabele %CD%, paden komt altijd overeen; dezelfde truc kan worden gebruikt in het veld START IN).


Antwoord 10

Als u dit batchbestand wilt uitvoeren zoals gepland of altijd; u kunt de Windows-planningstool gebruiken en deze wordt niet geopend in een venster wanneer het batchbestand wordt gestart.

Om Task Schedulerte openen:

  • Start -> Uitvoeren/Zoeken -> 'cmd'
  • Typ taskschd.msc-> voer in

Klik aan de rechterkant op Create Basic Tasken volg de menu’s.

Hopelijk helpt dit.


Antwoord 11

Hier is mijn voorkeursoplossing. Het is afkomstig van een antwoordop een vergelijkbare vraag.

Gebruik een VBS-script om het batchbestand aan te roepen:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

Kopieer de bovenstaande regels naar een editor en sla het bestand op met de extensie .VBS.

Other episodes