Diese Frage hat hier bereits eine Antwort:
Kann ich unter Windows XP eine Batchdatei (.bat oder .cmd) über eine Verknüpfung ohne "schwarzes Fenster" ausführen?
Diese Frage hat hier bereits eine Antwort:
Kann ich unter Windows XP eine Batchdatei (.bat oder .cmd) über eine Verknüpfung ohne "schwarzes Fenster" ausführen?
Antworten:
Speichern Sie Folgendes als wscript, beispielsweise hidecmd.vbs, nachdem Sie "testing.bat" durch den Namen Ihrer Stapeldatei ersetzt haben.
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
Der zweite Parameter von oShell.Run
ist der intWindowStyle
Wert, der das Erscheinungsbild des Programmfensters angibt, und der Wert Null ist für das ausgeblendete Fenster.
Die Referenz finden Sie hier http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
.bat
ich die Datei mit dieser Methode als Administrator aus?
Dies ist nur eine Vereinfachung von Shajis Antwort. Sie können Ihr Batch-Skript über ein VBScript- Skript (.vbs) wie folgt ausführen :
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
Dadurch wird Ihre Batch-Datei ausgeführt, ohne dass ein Befehlsfenster angezeigt wird.
.bat
kann ich mit dieser Methode eine Datei als Administrator ausführen ?
Um die Antworten zu "Windows Scripting verwenden" (die ich am besten finde, weil sie bereits integriert sind) zu erweitern, verwenden Sie ein einzelnes Wrapper-Skript und übergeben den Namen der "echten" Batch-Datei als Parameter. Zusätzliche Parameter werden an die Batch-Datei übergeben.
If WScript.Arguments.Count >= 1 Then
ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
Arg = WScript.Arguments(i)
If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
arr(i) = Arg
Next
RunCmd = Join(arr)
CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If
Also zB die obige Datei als NoShell.vbs
irgendwo speichern und dann aufrufen:
NoShell.vbs c:\foo\my_batch_file.bat
Wenn Sie dies von einem Ort aus ausführen möchten, der die .vbs-Datei nicht versteht (z. B. "Externe Tools" in Visual Studio), sollten Sie C:\Windows\System32\wscript.exe
die vbs-Datei als ersten Parameter und Ihren aufrufen Batch-Datei als zweite.
"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
.
"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat
. Egal, was ich für den Pfad versuche - doppelte Anführungszeichen um alles,% 20 anstelle des Leerzeichens oder eine Kombination dieser beiden, funktionieren nicht. Ich erhalte eine Fehlermeldung, dass die Datei nicht gefunden werden kann oder nichts passiert. Liegt dies an einem Benutzerfehler auf meiner Seite, einer Windows-Einschränkung mit dem Zielfeld für Verknüpfungen oder einem Problem mit dem vbs-Skript, in dem Dateipfade mit Leerzeichen nicht ordnungsgemäß verarbeitet werden?
Verwenden Sie start mit der Option '/ B'. Zum Beispiel:
@echo off
start /B go.bat
start /b
Führt das Programm nur in der aktuell zugewiesenen Konsole aus, anstatt eine neue zu erstellen. Sie erhalten ohnehin eine neue, da der Stapel mit cmd ausgeführt werden muss (was wiederum [überraschend] eine Konsole öffnet).
SYSTEM
in C / C ++).
cmd /c foo.cmd
. Es gibt absolut keine Notwendigkeit, start
in diesen Szenarien zu verwenden, und ich würde argumentieren, dass dies system
nicht zu Gunsten von verwendet werden sollte CreateProcess
. Wenn Sie eine Batch-Datei starten, sind Sie bereits auf eine Plattform angewiesen. Sie können auch die besseren Tools für den Job verwenden.
cmd /c
zuvor gehört. Der Befehl cmd ist das, was ich in meinem Fall brauchte, aber alle Stapelaustausch-Antworten, die ich bisher über eine Stapeldatei gefunden habe, die eine andere
start /b go.bat
nicht eine neue Konsole (- oder einen Faden in CSRSS.exe vor Windows 7 dh eine Instanz von conhost.exe) zuzuteilen. Da das Batch-Skript mit einer neuen Instanz von cmd.exe ausgeführt wird, die an dieselbe Konsole angehängt ist, führt dies jedoch zu Problemen . Beide Instanzen der Shell konkurrieren abwechselnd um das Lesen von Eingaben von der Konsole. Es benötigt /w
(zB start /b /w go.bat
), um auf die zweite Instanz zu warten, ähnlich wie using cmd /c
if using system
. Wenn Sie anrufen CreateProcess
, können Sie auch go.bat
direkt ausführen . Es gibt keine Notwendigkeit dafür cmd /c
.
Freie GPL Open Source "Versteckten Prozess erstellen"
http://www.commandline.co.uk/chp/
Microsoft Security Essentials und wahrscheinlich auch die meisten anderen Viren- / Malware-Scanner behandeln die ausführbare Datei "chp.exe" als Virus, da sie genau wie Viren alle von Ihnen angegebenen Programme vor dem Anzeigen eines Fensters oder einer Taskleistenschaltfläche schützt.
Es ist kein Virus. Der Zielprozess wird nicht ausgeblendet, wenn er beispielsweise im Task-Manager angezeigt wird. Und natürlich ist der Quellcode enthalten, damit Sie sehen können, dass er sehr klein ist und nichts anderes tut, als das Programm auszuführen, das Sie ihm geben.
Sie müssen nicht einmal darauf vertrauen, dass die enthaltene chp.exe wirklich aus dieser Quelle erstellt wurde. Sie können die enthaltene chp.exe verwerfen und Ihre eigene aus dem Quellcode kompilieren. Alle dazu erforderlichen Tools sind sogar kostenlos und können heruntergeladen werden.
Sie können auch einfach eine Verknüpfung zur .bat- oder .cmd-Datei erstellen und dann mit der rechten Maustaste auf die Verknüpfung, Eigenschaften, Registerkarte Verknüpfung, Ausführen: Minimiert klicken. Verwenden Sie dann in geplanten Aufgaben die Verknüpfung anstelle der .bat / .cmd-Datei direkt. Dadurch wird verhindert, dass ein Fenster angezeigt wird, es wird jedoch weiterhin eine Taskleistenschaltfläche angezeigt.
Sie können Fensterskripte wie AutoIt verwenden .
Schreiben Sie dies zum Beispiel einfach in den AutoIt-Skript-Editor. Es ist ziemlich einfach
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Wenn Sie es in einer Schleife ausführen möchten,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Kompilieren Sie es als .exe - und Sie sind fertig.
Ebenso in AutoHotkey :
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
Verwenden Sie Hidden Start (kostet 20 $)
Versteckter Start - Ausführen von Anwendungen und Stapeldateien ohne ein Konsolenfenster oder eine UAC-Eingabeaufforderung
Konsolenanwendungen und Batchdateien werden regelmäßig beim Start von Windows oder nach einem Zeitplan ausgeführt. Der größte Nachteil dabei ist, dass jede Anwendung ein Konsolenfenster öffnet, das auf dem Bildschirm flackert. Hidden Start (oder Hstart) ist ein einfaches Befehlszeilendienstprogramm, mit dem Sie Konsolenanwendungen und Batchdateien ohne Fenster im Hintergrund ausführen, die Erhöhung der UAC-Berechtigungen unter Windows 7 und Vista verwalten, mehrere Befehle parallel oder synchron starten und vieles mehr .
Einfache Lösung ohne zusätzliche Programme.
Viel Glück!