[BATCH]CMD-Fenster verstecken

o0Julia0o

Commander
Registriert
Dez. 2012
Beiträge
2.772
ich kenne BatchToExe und cmdow, um das CMD-Fenster bei einer Batch-Datei zu verstecken.

Bei BatchToExe macht der aber dann Murks (Fenster ist versteckt). Nützt mir also nix.

Bei cmdow startet der das Programm, welches ich mit der Batch starte jedoch minimiert, wenn ich folgendes in der 1. Zeile einfüge:
CMDOW @ /HID

Also bei:
Code:
CMDOW @ /HID
Programm1.exe
exit
wird das Programm1.exe minimiert ausgeführt. Per:
Code:
Programm1.exe
exit
maximiert, wie es soll.

Gibt es eine weitere Möglichkeit das CMD-Fenster zu verstecken? Ohne gesonderte Installation auf dem Host-System, wie Hstart.
 
Ich stelle erst mal ne Gegenfrage: Wofür benötigst du denn, dass das Programm aus einer cmd gestartet wird?
Eventuell gibt es ja Alternativen, wo sowas gar nicht nötig wäre.
 
  • Gefällt mir
Reaktionen: o0Julia0o
Erstelle von der cmd ein Verknüpfung. In den Optionen der lnk (Link Datei) unter dem Reiter "Verknüpfung" die Option "Ausführen" nehmen und "Minimiert" auswählen. Startet nun die lnk Datei, bleibt das Fenster der cmd versteckt in der Taskleiste.
 
  • Gefällt mir
Reaktionen: o0Julia0o
Nur erfüllt das mit großer Wahrscheinlichkeit nicht den Zweck mit einem billigen Hackversuch unentdeckt zu bleiben.
 
  • Gefällt mir
Reaktionen: o0Julia0o und schmibu
Danke!

kartoffelpü schrieb:
Ich stelle erst mal ne Gegenfrage: Wofür benötigst du denn, dass das Programm aus einer cmd gestartet wird?
Eventuell gibt es ja Alternativen, wo sowas gar nicht nötig wäre.
Es muss nicht aus einer CMD heraus gestartet werden. Ich starte es per Batch, dann öffnet sich automatisch die CMD. Ich gebe dem Programm einen Schalter mit.

Mercator schrieb:
Erstelle von der cmd ein Verknüpfung. In den Optionen der lnk (Link Datei) unter dem Reiter "Verknüpfung" die Option "Ausführen" nehmen und "Minimiert" auswählen. Startet nun die lnk Datei, bleibt das Fenster der cmd versteckt in der Taskleiste.
In der Taskleiste verstehe ich nicht als versteckt. Es soll gar nicht sichtbar sein.
 
o0Julia0o schrieb:
Danke!


Es muss nicht aus einer CMD heraus gestartet werden. Ich starte es per Batch, dann öffnet sich automatisch die CMD. Ich gebe dem Programm einen Schalter mit.


In der Taskleiste verstehe ich nicht als versteckt. Es soll gar nicht sichtbar sein.
Äh, aber dir ist bewusst, dass CMD und Batch das gleiche ist?
Zwar ne andere Endung, aber das war's eigentlich auch schon...

Nochmal die Frage: Wofür soll es denn aus einer CMD/Batch gestartet werden? Nur für den Schalter?
Falls ja: Verknüpfung erstellen und dort den Schalter einfügen, z.B.:
1624889703720.png
 
  • Gefällt mir
Reaktionen: o0Julia0o
Nicht nur für einen Schalter. Es wird halt einiges in der Batch nacheinander gemacht. Hab´s jetzt doch mit BatToExe hinbekommen. In der neuen Version gibt es eine Option: Asynchron. Diese musste ich ankreutzen. Keine Ahnung, was das ist - aber es funktioniert :)

Mit https://github.com/stbrenner/SilentCMD gibt es noch eine weitere Möglichkeit.
 
Zuletzt bearbeitet:
Mit einem VBS-Skript müsste das realisierbar sein; da mit VBS ein Skript hidden ausgeführt werden kann. Wenn mich nicht alles täuscht heißt der Befehl vbHide oder ähnlich.
 
Ja das hatte ich auch irgendwo gelesen. So soll das gehen:
Code:
CreateObject(“Wscript.Shell”).Run “””” & WScript.Arguments(0) & “”””, 0, False
Aber das verstand ich nicht. Ich kann nur so einfache Batch-Sachen, wenn ich jetzt alles in VB übersetzen müsste, könnte ich das halt nicht.
 
Du könntest das Script mit einem anderen User laufen lassen. Sagen wir, der Rechner hat einen Administrator und einen Benutzer. Wenn Du als Benutzer angemeldet bist, kannst Du die Batch per Aufgabenplaner/Tasks als Administrator ausführen und es taucht kein Batchfenster auf.

Der VB Code wäre folgender
WScript.CreateObject( "WScript.Shell" ).Run "C:\test.bat",0,0

0,0 beschreibt dabei die Fenstergröße

Code abspeichern als .vbs und der Pfad "C:\test.bat" ist nur ein Beispiel.
 
  • Gefällt mir
Reaktionen: o0Julia0o
Das täte auch, danke Dir! Das Fenster ist nichtmal unten aufgeführt in der Taskleiste.
 
styletunte schrieb:
Der VB Code wäre folgender
WScript.CreateObject( "WScript.Shell" ).Run "C:\test.bat",0,0
Kann man den Pfad auch relativ angeben zum Ausführungsort der vbs-Datei?

Also statt:
WScript.CreateObject( "WScript.Shell" ).Run "C:\Testordner\test.bat",0,0

Die start.vbs liegt auf C:\:
WScript.CreateObject( "WScript.Shell" ).Run "\Testordner\test.bat",0,0

So geht es jedenfalls nicht. Google sagr mir etwas vonwegen Thisworkbook.path. Aber das geht genausowenig.
 
"Thisworkbook" gibt es vermutlich nur in VBA und nicht in VBS. Die sind nicht 100% identisch.

Was funktioniert (eben ergoogelt + mit meinen VBA-Kenntnissen kombiniert):
Code:
Dim WshShell, strBatch
Set WshShell = CreateObject("WScript.Shell")
strBatch = WshShell.CurrentDirectory & "\Testordner\test.bat"
WshShell.Run strBatch,0,0

Auch möglich, mit einer Variable weniger...
Code:
Dim strBatch
With CreateObject("WScript.Shell")
    strBatch = .CurrentDirectory & "\Testordner\test.bat"
    .Run strBatch,0,0
End With

Es gibt auch noch andere Varianten, aber die obere sollte vermutlich ausreichend sein.


EDIT:
lol...🤦‍♂️ an mich selber: Wesentlich einfacher ist....

WScript.CreateObject("WScript.Shell").Run ".\Testordner\test.bat",0,0

Dir fehlte nur der Punkt vor dem Pfad.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: o0Julia0o
wollt ich gerade schreiben, normal reicht .\test.bat
 
  • Gefällt mir
Reaktionen: o0Julia0o
Cool. Mir ist jetzt folgendes aufgefallen. Wenn ich die bat direkt starte, dann bleibt sie während der Ausführung im Taskmanager sichtbar, was ja praktisch ist, da ich so auch auf sie eingehen kann: "wenn test.bat bereits läuft, dann...". Also, falls das Programm versehentlich 2x gestartet wird, könnte ich so darauf überprüfen.

Wenn ich die bat über die vbs-Datei starte, dann taucht weder die vbs noch die bat während der Laufzeit im Taskmanager auf.
 
Man sieht die BAT/CMD auch im Taskmanager, wenn sie über eine VBS gestartet wurde. Die BAT/CMD taucht dann nur nicht bei den "Apps" (der obere Teil), sondern unter "Hintergrundprozesse" (weiter unten) auf. Das fiel mir bei meinen Tests auf...
 
  • Gefällt mir
Reaktionen: o0Julia0o
Danke Dir Darkman.X. Achso - der task heisst einfach nur Windows-Befehlsprozessor.
 
  • Gefällt mir
Reaktionen: Darkman.X
Zurück
Oben