2009-10-29 12:42:48 +0000 2009-10-29 12:42:48 +0000
144
144

Eine Batch-Datei komplett versteckt ausführen

Ich suche nach einer Möglichkeit, eine Batch-Datei (.bat) auszuführen, ohne daß für den Benutzer etwas sichtbar ist (kein Fenster, kein Taskleistenname, .etc…)

Ich möchte kein Programm dafür verwenden, ich suche etwas Saubereres. Ich habe eine Lösung gefunden, die VBScript verwendet, aber ich benutze VBS auch nicht wirklich gern.

Antworten (23)

122
122
122
2009-10-29 16:29:10 +0000

Lösung 1:

Speichern Sie diese eine Textzeile als Datei invisible.vbs:

CreateObject(“Wscript.Shell”).Führen Sie “”“” & WScript aus. Argumente(0) & “”“”, 0, Falsch

Um ein beliebiges Programm oder eine Batch-Datei unsichtbar auszuführen, verwenden Sie es wie folgt:

wscript.exe “C:\Wherever\invisible.vbs” “C:\Some Other Place\MyBatchFile. bat”

Um auch eine Liste von Argumenten weitergeben/weitergeben zu können, verwenden Sie nur zwei doppelte Anführungszeichen

CreateObject(“Wscript.Shell”).Run “” & WScript. Argumente(0) & “”, 0, Falsch

Beispiel: Invisible.vbs "Kill.vbs ME.exe"

Lösung 2:

Verwenden Sie ein Befehlszeilen-Tool, um einen Prozess stillschweigend zu starten: Quiet , hidecon oder hideexec .

29
29
29
2012-06-29 21:06:44 +0000

Um Batch-Dateien oder Befehlsdateien oder beliebige Dateien auszublenden…. Verwenden Sie das in Windows XP integrierte Dienstprogramm IExpress.exe, um aus der Stapeldatei eine .EXE zu erstellen. Wenn Sie IExpress verwenden, stellen Sie sicher, dass Sie die Option “Versteckt ausführen” markieren und alle Kästchen über das Nicht-Anzeigen von etwas ankreuzen. Nachdem Sie Ihre .exe erstellt haben, platzieren Sie sie in dem von Ihnen gewählten Ausführungsbefehl-Ordner und Sie werden nie sehen, dass sie angezeigt wird.

10
10
10
2009-10-29 12:48:03 +0000

use Cmdow ist ein Win32-Befehlszeilen-Dienstprogramm für NT4/2000/XP/2003, mit dem Fenster aufgelistet, verschoben, in der Größe verändert, umbenannt, ausgeblendet/eingeblendet, deaktiviert/aktiviert, minimiert, maximiert, wiederhergestellt, aktiviert/aktiviert, geschlossen, beendet und vieles mehr werden können.

Führen Sie eine Batch-Datei versteckt aus und übergeben Sie die folgenden Parameter: -

cmdow /run /hid mybat arg1 “arg 2”.

10
10
10
2013-01-13 03:36:21 +0000

Wenn Ihre Stapeldatei in eine Zeile und so viele Zeichen passt, dann verwenden Sie einfach eine Verknüpfung, indem Sie mit der rechten Maustaste in einen Ordner klicken, der in einem zufälligen Verzeichnis liegt, und überspringen Sie den Rest des Assistenten, und schließlich klicken Sie mit der rechten Maustaste auf die soeben erstellte Verknüpfung und klicken Sie auf Eigenschaften und geben Sie unter Ziel das ein, was Sie normalerweise in eine Stapeldatei schreiben würden. Und Bobs Ihr Onkel!

Vorteile:

No Command Window
 Ability to use an icon
 Same Functionality of bat file

Nachteile:

Limited to one line, so many characters
9
9
9
2009-10-29 12:49:03 +0000

Führen Sie das Skript über einen at job aus, ohne es interaktiv zu machen:

at 11:00 script.bat

Eine andere Lösung, wenn es Ihnen nichts ausmacht, etwas wie Python zu installieren, könnten Sie einfach ein Skript erstellen und es mit pythonw (der verlinkten Version für GUI-Operationen) ausführen. Da Sie keine grafischen APIs verwenden, wird das Fenster nicht angezeigt. Verwenden Sie einfach Aufrufe an os.system() und es wird ein Batch-Skript imitieren, da es dasselbe ist wie die Eingabe der Zeichenfolgen in die Befehlszeile.

Beispiel:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")
7
7
7
2014-05-12 08:25:28 +0000

Ich mag die VBScript-Lösung nicht.

Downloaden und kopieren Sie nircmd.exe in Ihren Ordner %systemroot%\system32, fügen Sie dann diesen Befehl in die erste Zeile Ihres Stapels ein:

nircmd.exe win hide ititle "cmd.exe"

oder passen Sie den Titel Ihres Stapels zuerst mit dem Befehl title an, um zu vermeiden, dass alle Fenster von cmd ausgeblendet werden, etwa so:

title MyBatch
nircmd.exe win hide ititle "MyBatch"
7
7
7
2009-10-29 15:54:30 +0000

Sie können es einfach minimiert ausführen.

start /MIN batch.cmd
6
6
6
2013-01-09 20:57:35 +0000

Unter Windows7 können Sie die Systemsteuerung “Geplante Aufgabe” verwenden, um eine Batchdatei so zu planen, dass sie mit bestimmten Berechtigungen und sogar als “SYSTEM”-Konto unsichtbar im Hintergrund ausgeführt wird. Siehe Screenshot unten:

Darüber hinaus können Sie, obwohl nicht so viele Möglichkeiten vorhanden sind, eine unsichtbare Batch-Skript-Aufgabe wie diese auch von der Befehlszeile aus mit dem Befehl “AT.exe” ohne die Option “/interactive” erstellen.

5
5
5
2016-10-30 13:15:17 +0000

Der ausgezeichnete Bat To Exe Converter wird Ihre .bat oder .cmd Datei in eine .exe Datei konvertieren.

Es hat eine einfache UI. Sie können wählen, kein Konsolenfenster zu haben, indem Sie eine Exe Format von XX Bit | Windows (Invisible) Option auswählen. Außerdem können Sie ein Icon zuweisen, ein Passwort und verschiedene andere Optionen festlegen.

4
4
4
2011-01-26 19:38:48 +0000

Es scheint, dass jemand eine Liste der 7-8 Möglichkeiten gemacht hat, um ‘still’ zu laufen:

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html

4
4
4
2017-06-19 08:27:15 +0000

YET ANTHERER Weg, von C/C++ aus, ist die Verwendung der Funktion CreateProcess mit dem CREATE_NO_WINDOW-Flag. Sie hat eine Menge zusätzlicher Leistung, die hier nicht gezeigt wird. Dies ist nur das Minimum, das Sie benötigen, um system() oder die _spawn()-Familie zu ersetzen.

STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );

// Spawn creates a cmd.exe window. CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {  
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
                     CREATE_NO_WINDOW, NULL, NULL, &si, &pi ) ) {
  MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
  goto MyErrorHandling;
}

WaitForSingleObject( pi.hProcess, INFINITE );

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
4
4
4
2017-04-16 14:03:20 +0000

Sie können auch ein AutoHotkey -Skript erstellen:

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
3
3
3
2014-09-24 17:58:35 +0000

Ich habe es mit nircmd erfolgreich so gemacht:

  1. laden Sie nircmd.exe vom link herunter 2. erstellen Sie Ihre .bat-Datei
  2. die erste Zeile der .bat-Datei muss diese sein: nircmd.exe win hide ititle "cmd.exe"
  3. Wählen Sie beide Dateien aus und erstellen Sie eine selbstextrahierende Datei mit winrar
  4. Aktivieren Sie im Reiter “Allgemein” das Kontrollkästchen “Autoextrahiere Datei erstellen”
  5. Wählen Sie im Reiter “Fortschritt” die Schaltfläche “Autoextrahieren” 7: “alles ausblenden”
  6. wählen Sie die Registerkarte “Aktualisieren” und wählen Sie die Option “vorhandene Dateien überschreiben”
  7. Wählen Sie die Registerkarte “Allgemein” und legen Sie einen Zielordner für die Extraktion fest, wenn Sie dies wünschen, und schreiben Sie in das Feld “Nach Extraktion ausführen” den vollständigen Pfad, in den Ihre .bat extrahiert werden soll. Bsp.: wenn Sie den Extraktionsordner definieren als: “c:\windows\” definieren, dann wird der volle Pfad zum Ausführen nach der Extraktion sein: “c:\windows\file.bat” (für den Fall, dass Ihre .bat den Namen: file.bat trägt)
  8. Klicken Sie auf accept on all windows

Nun haben Sie eine .exe-Datei, die nach dem Doppelklicken und Installieren Ihrer .bat völlig versteckt ausgeführt wird.

2
2
2
2016-01-30 16:44:14 +0000

Hinzufügen meiner Antwort hier von einem anderen post , da es ein Duplikat war und ich diese Lösung hier nicht sehe, also gibt es jetzt 17 verschiedene Antworten, wie man eine Batch-Datei versteckt ausführen kann. Ich werde meine Antwort auf diesen Beitrag irgendwann in naher Zukunft löschen.

Erstellen Sie Ihr Batch-Skript mit Ihrer Batch-Logik und Ihren Befehlen darin, und erstellen Sie dann eine neue Datei mit der Erweiterung .VBS, verwenden Sie die untenstehende Logik (Beispiel, das ich unten angegeben habe) und fügen Sie einfach den vollständigen Pfad zu Ihrer Datei .CMD oder .BAT mit der Erweiterung PING -t <IPAddress> ein, usw. Befehle ein, so dass der Batch versteckt ausgeführt wird und das Befehlsfenster bei der Ausführung nicht angezeigt wird.

Wo die Logik im Beispiel unten C:\Folder\BatchFileName.cmd angibt, ändern Sie das so, dass es mit Ihren Befehlen auf das Batch-Skript zeigt, das Sie gerade manuell ausführen, usw.

Speichern Sie die Datei .VBS und planen Sie sie mit Task Scheduler Probleme bei der Planung eines Tasks auf Windows7 so ein, dass sie nach einem unbegrenzten Zeitplan für Ihre Bedürfnisse ausgeführt wird.

Andernfalls doppelklicken Sie einfach auf die Datei .VBS, um den unendlichen Befehl PING auszuführen, den Sie in die Batch-Datei eingegeben haben, auf die Sie sie bei Bedarf verweisen.

NOTE: Ich glaube, hier habe ich diese Skriptlogik her, aber sie funktioniert zuverlässig für den gleichen Zweck, den Sie hier benötigen, nämlich sicherzustellen, dass das Befehlsfenster versteckt wird, wenn eine Batch-Datei ausgeführt wird Server-Fehlerquelle

BEISPIEL VBS SCRIPT RUN COMMAND LUN COMMAND LINE BATCH HIDING CMD WINDOW

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
2
2
2
2012-10-12 07:16:50 +0000
  • Hier ** Ich habe alle mir bekannten Möglichkeiten kompiliert, um einen versteckten Prozess mit Batch ohne externe Tools zu starten.mit fertigen Skripten (einige von ihnen ziemlich reich an Optionen) , und alle von ihnen bilden die Befehlszeile.Wo möglich wird auch die PID zurückgegeben.verwendete Tools sind IEXPRESS,SCHTASKS,WScript.Shell,Win32_Process und JScript.Net
2
2
2
2017-03-09 18:01:08 +0000

Obwohl ich bereits geantwortet habe, gibt es hier einen anderen Ansatz. Der Unterschied besteht darin, dass sich das Batch-Skript während seiner Ausführung selbst verstecken kann. Sie benötigen jedoch zwei zusätzliche Skripte - windowMode.bat und getCMDPid.bat (beide enthalten .net-Code). Hier, wie sie dann verwendet werden können:

@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden

echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
1
1
1
2011-07-02 09:04:44 +0000

Sie brauchen keine besonderen Vorkehrungen zu treffen.

Wenn Sie die Batch-Dateien von einem Windows-Dienst ausführen, sollten sie standardmäßig ausgeblendet werden, es sei denn, Sie aktivieren die Option “Interaktion des Dienstes mit dem Desktop zulassen” auf dem Dienst.

1
1
1
2010-06-14 14:11:34 +0000
cmdow /run /hid "file.extention" arg1 "arg 2"
0
0
0
2018-05-05 10:39:45 +0000

Ich musste das Fenster für eine Batch-Datei ausblenden, die über ein Explorer-Kontextmenü aufgerufen wurde, und außerdem musste ich den Parameter in Anführungszeichen setzen. Keine der Antworten hat bei mir funktioniert, also füge ich meine eigene Lösung hinzu.

Ich hatte diesen “Befehl” in der Registry für ein Explorer-Kontextmenü:

cmd /c C:\mypath\myprogram.bat "%1"

Um ihn zu ersetzen, musste ich also einen vbs wie diesen erstellen:

WScript.CreateObject ("WScript.shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False

An einem Ort wie C:\mypath\myscript.vbs speichern und ihn wie diesen in der Registry aufrufen:

wscript "C:\mypath\myscript.vbs" "%1"

Beachten Sie, dass der .bat-Pfad keine Leerzeichen enthalten darf, also ersetzen Sie ihn durch den 8.3-Dateinamen. So muss zum Beispiel C:\Program Files\myprogram.bat als C:\Progra~1\myprogram.bat referenziert werden. Um den 8.3-Dateinamen zu sehen, verwenden Sie dir /x

0
0
0
2018-06-21 08:15:59 +0000

Ich bin RunApp erstellt worden, um eine solche Aufgabe zu erledigen und benutze es auch in meiner Produktion env, ich hoffe, es hilft.

Die Konfiguration wie unten:

Datei: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

Und stattdessen runapp.exe starten.

0
0
0
2013-06-07 20:50:58 +0000

Ich hatte das gleiche Problem, habe es aber herausgefunden: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

0
0
0
2012-12-17 17:03:50 +0000

Ich habe angefangen, dies herauszufinden, und es ist mir nie wirklich gelungen. Das war so nahe dran, wie ich kam:

@echo off
if not defined PIL (
    set PIL=1
    start /min "" %~0
    exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
-1
-1
-1
2014-08-15 23:36:30 +0000

Dies funktioniert für Fenster 8 (möglicherweise andere)

  1. Erstellen Sie eine Batch-Datei wie normal
  2. Erstellen Sie eine Verknüpfung zu der Batch-Datei
  3. Klicken Sie mit der rechten Maustaste auf die Verknüpfung > Eigenschaften
  4. Klicken Sie auf Layout
  5. deaktivieren Sie “Systempositionsfenster lassen”
  6. setzen Sie die linke Position tp -1000
  7. klicken Sie auf Anwenden

  8. Klicken Sie auf die Verknüpfung und sie wird ausgeführt, aber Sie werden sie nicht sehen :)