2011-01-14 18:23:22 +0000 2011-01-14 18:23:22 +0000
59
59

Hoe maak ik een Windows Batch-bestand aan dat de Command Prompt niet laat zien als het wordt uitgevoerd?

Ik heb een robijnrode edelsteen met de naam Redcar geïnstalleerd, die vanaf de commandoregel wordt gestart. Wanneer het draait, steelt het de shell totdat het eindigt, dus ik moet een nieuw shell venster maken om verder te gaan met het werk op de commandoregel. De shell die ik gebruik is de GITBash shell van MySysGit.

Ik heb een Redcar.bat bestand gevonden dat bedoeld is om Redcar te starten als een snelkoppeling, neem ik aan, maar ik wil niet dat het extra commando prompt venster opent wanneer ik het BAT bestand lanceer.

Hoe kan ik de BAT gewoon draaien zonder de prompt te zien?

Antwoorden (11)

38
38
38
2011-01-21 18:41:45 +0000

U kunt niet – het uitvoeren van een batch-bestand met de ingebouwde Command Prompt houdt een venster open tot het batch-bestand wordt afgesloten.

Wat u kan doen is stappen ondernemen om ervoor te zorgen dat het batch-bestand zo snel mogelijk wordt afgesloten. Indien mogelijk, wijzig het batchbestand om eender welk programma uit te voeren met het start commando. Standaard keert start direct terug zonder te wachten tot het programma wordt afgesloten, zodat het batchbestand blijft draaien en, vermoedelijk, direct wordt afgesloten. Als je dat koppelt aan het wijzigen van de snelkoppeling om het batch-bestand te draaien, wordt de taakbalk alleen maar geflitst zonder dat je zelfs maar een venster op het scherm ziet.

Een voorbehoud is dat als je een console-mode programma uitvoert, wat veel scripttolken zijn, het batch-bestand zal wachten tot het programma wordt afgesloten, en dat het gebruik van start een nieuw console-venster zal opleveren. Wat je in dit geval moet doen is de Windows gebaseerde versie van de interpreter draaien in plaats van de console gebaseerde – geen start nodig. Voor Perl zou u wperl.exe uitvoeren in plaats van perl.exe. Voor Python is het pythonw.exe in plaats van python.exe. De oude win32 Ruby distributie die ik heb gedownload heeft rubyw.exe, die hetzelfde zou moeten doen.

Een laatste mogelijkheid is om een 3rd party tool te gebruiken om de opdrachtprompt met een verborgen venster uit te voeren. Ik heb van zulke dingen gehoord, maar heb er nooit gebruik van gemaakt, dus ik weet niets in het bijzonder om je op te wijzen.

22
22
22
2014-01-15 06:25:25 +0000

Ik denk dat dit de makkelijkste en kortste oplossing is om een batchbestand uit te voeren zonder het DOS-venster te openen, het kan erg afleidend zijn als je een set commando’s wilt plannen om periodiek te draaien, dus het DOS-venster blijft maar opduiken, hier is je oplossing. Gebruik een VB Script om het batchbestand aan te roepen …

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing

Kopieer de bovenstaande regels naar een editor en sla het bestand op met de .VBS-extensie. Bewerk de .BAT-bestandsnaam en het pad overeenkomstig. Voer dan gewoon het .vbs-bestand uit en de magie gebeurt!

8
8
8
2013-01-02 05:37:05 +0000

U kunt een ander batchbestand uitvoeren met START /MIN CMD.EXE /C mybatchfile.bat binnen de opdrachtprompt.

Van buitenaf brengt het het cmd-consolevenster, maar om dat te voorkomen, kunt u een snelkoppeling aanmaken met eigenschappen gewijzigd in begin geminimaliseerd.

5
5
5
2016-09-11 08:06:00 +0000

Gebruik hiervoor het programma Bat To Exe Converter om uw batchbestand te converteren naar een uitvoerbaar bestand.

Bij het converteren naar een uitvoerbaar bestand vindt u een optie om uw bestand als Invisible application uit te voeren in het gedeelte Zichtbaarheid. Wanneer u het bestand uitvoert, wordt het dus uitgevoerd zonder venster.

4
4
4
2012-12-18 07:07:00 +0000

Als je doorgaat met het antwoord van Dennis Williamson, kun je het batchbestand bewerken en START /B toevoegen (prepend) aan het commando dat je uitvoert.

Bijvoorbeeld, ik heb een batchbestand dat putty draait en hetzelfde probleem had (extra CMD), dus zo heb ik het geschreven:

@ECHO OFF START /B putty.exe -load _name\_of\_my\_config\_file_

Het werkte perfect.

4
4
4
2011-01-14 19:32:24 +0000

Probeer het eens:

START /B batchfile

noot toegevoegd door barlop

start /? zegt van /B

B Start application without creating a new window. The
             application has ^C handling ignored. Unless the application
             enables ^C processing, ^Break is the only way to interrupt
             the application.
3
3
3
2015-04-25 09:00:42 +0000

U kunt RunHiddenConsole

hideExec.bat

@echo off
RunHiddenConsole batch.bat
``` gebruiken.
3
3
3
2011-01-21 18:20:43 +0000

Ik ben niet duidelijk over je probleem, maar bij sommige van mijn batch-bestanden gebruik ik een “dumy” die alleen bedoeld is om het hoofdbatchbestand te starten.

Dus GO.BAT heeft:

cmd /c go2.bat %1 %2 %3
exit

De uitgang sluit het commando prompt venster dat anders open zou blijven.

En GO2.BAT heeft de werkelijke inhoud van het batchbestand dat ik wil.

@echo off
  set userid=

  if NOT [%1]==[] goto userid:
  set /p userid=Enter USERID:  
  goto set_usr:

 :userid
 set userid=%1
 shift

 :set_usr
 if %userid%==steven goto steven:
 ...
0
0
0
2013-03-04 00:36:09 +0000

Zet de /b-schakelaar gewoon voor het pad. Het zal de tweede opdrachtprompt niet openen.

0
0
0
2014-10-18 16:43:48 +0000

Indago’s antwoord ](https://superuser.com/a/701867/141909) is voor mij tot nu toe de beste oplossing geweest. Met het VBS-bestand kan ik de functionaliteit van de batch via het script uitvoeren, waardoor het CMD-venster in de eerste plaats wordt voorkomen. Er zijn echter een paar voorbehouden:

  1. Als je batch admin-rechten nodig heeft, maak of gebruik dan een bestaande batch die het VBS aanroept en voer die batch uit als Administrator.

  2. Zonder zichtbaarheid kan het moeilijk zijn om te onderscheiden of wat je probeert te doen ook echt werkt zoals je wilt.

Met dat gezegd hebbende, zou ik eerst een kleine mock set-up/unit test doen om er zeker van te zijn dat het precies werkt zoals je het wilt, voordat ik het integreer.

0
0
0
2016-05-20 07:11:31 +0000

Ik heb in het verleden cmdow gebruikt, en het lijkt te hebben gewerkt voor wat ik wil.

Je zult waarschijnlijk een van de volgende opties willen gebruiken:CMDOW [window] /HID

/HID verbergt het opgegeven venster

CMDOW [window] /END

/END sluit het opgegeven venster

CMDOW [window] /CLS

/CLS vroeg beleefd het venster te sluiten (sommige vensters kunnen een dialoogvenster openen)

Hoop dat dit helpt.