Ich suche nach einer Möglichkeit, eine Batch-Datei (.bat) auszuführen, ohne dass für den Benutzer etwas sichtbar ist (kein Fenster, kein Name in der Taskleiste, .etc ..).
Ich möchte kein Programm verwenden, um das zu tun, ich suche etwas saubereres. Ich habe eine Lösung gefunden , die VBScript verwendet, aber ich mag es auch nicht, VBS zu verwenden.
windows
command-line
batch-file
Moayad Mardini
quelle
quelle
Antworten:
Lösung 1:
Speichern Sie diese eine Textzeile als Datei
invisible.vbs
:Um ein Programm oder eine Batch-Datei unsichtbar auszuführen, verwenden Sie sie wie folgt:
Um auch eine Liste von Argumenten weitergeben zu können, verwenden Sie nur zwei doppelte Anführungszeichen
Beispiel:
Invisible.vbs "Kill.vbs ME.exe"
Lösung 2:
Verwenden Sie ein Befehlszeilentool, um einen Prozess unbeaufsichtigt zu starten: Quiet , hidecon oder hideexec .
quelle
&
bedeutet, dass Zeichenfolgen verkettet werden. Zeichenfolgen werden in doppelte Anführungszeichen ("
) eingeschlossen. Aufeinanderfolgende Anführungszeichen (""
) innerhalb von Zeichenfolgenbegrenzern bedeuten ein wörtliches Anführungszeichen ("
). Vier doppelte Anführungszeichen (""""
) wären also ein String-Literal mit einem Zeichen, ein doppeltes Anführungszeichen ("
). Füge es zusammen und"""" & WScript.Arguments(0) & """"
werde"<argument>"
, wo<argument>
das erste Befehlszeilenargument an das Skript übergeben wird.wscript.exe "C:\Wherever\invisible.vbs" ...
Innere von zu setzen?So verbergen Sie Batchdateien, Befehlsdateien oder andere Dateien: Verwenden Sie das in Windows XP integrierte
IExpress.exe
Dienstprogramm, um eine EXE-Datei aus der Batchdatei zu erstellen. Wenn Sie verwenden,IExpress
stellen Sie sicher, dass Sie die Option "Ausgeblendet ausführen" aktivieren und alle Kontrollkästchen aktivieren, um nichts anzuzeigen. Nachdem Sie Ihre .exe-Datei erstellt haben, legen Sie sie in den von Ihnen gewählten Ausführungsbefehlsordner und Sie werden sie nie mehr sehen.quelle
use Cmdow ist ein Win32- Befehlszeilenprogramm für NT4 / 2000 / XP / 2003, mit dem Fenster aufgelistet, verschoben, in der Größe geändert, umbenannt, ausgeblendet / nicht ausgeblendet, deaktiviert / aktiviert, minimiert, maximiert, wiederhergestellt, aktiviert / inaktiviert, geschlossen, getötet und angezeigt werden können Mehr.
Führen Sie eine versteckte Batch-Datei aus, indem Sie die Parameter übergeben:
quelle
Wenn Ihre Stapeldatei in eine Zeile und so viele Zeichen passt, verwenden Sie einfach eine Verknüpfung, indem Sie mit der rechten Maustaste in einen Ordner in einem zufälligen Verzeichnis klicken, den Rest des Assistenten überspringen und zuletzt mit der rechten Maustaste auf die gerade erstellte Verknüpfung und klicken Klicken Sie auf Eigenschaften und geben Sie unter Ziel ein, was Sie normalerweise in eine bat-Datei einfügen würden. Und Bob dein Onkel!
Vorteile:
Nachteile:
quelle
Führen Sie das Skript über einen at-Job aus, ohne es interaktiv zu machen:
Eine andere Lösung: Wenn Sie etwas wie Python installieren möchten, können Sie einfach ein Skript erstellen und es mit
pythonw
(der verknüpften Version für GUI-Vorgänge) ausführen. Da Sie keine grafischen APIs verwenden, wird das Fenster nicht angezeigt. Verwenden Sie einfach Aufrufe vonos.system()
und es wird ein Batch-Skript imitiert, da es das gleiche ist wie das Eingeben der Zeichenfolgen in die Befehlszeile.Beispiel:
quelle
Sie können es leicht minimiert ausführen.
quelle
Unter Windows7 können Sie über die Systemsteuerung "Geplante Tasks" festlegen, dass eine Batchdatei im Hintergrund unsichtbar mit den angegebenen Berechtigungen und sogar als "SYSTEM" -Konto ausgeführt wird. Siehe Screenshot unten:
Darüber hinaus können Sie mit dem Befehl "AT.exe" ohne die Option "/ interactive" auch eine unsichtbare Batch-Skript-Task wie diese über die Befehlszeile erstellen.
quelle
Ich mag keine VBScript-Lösung.
Laden Sie die Datei nircmd.exe herunter und kopieren Sie sie in Ihren
%systemroot%\system32
Ordner. Fügen Sie dann den folgenden Befehl in die erste Zeile Ihres Stapels ein:oder machen Sie Ihren Stapeltitel zuerst mit dem
title
Befehl benutzerdefiniert , um zu vermeiden, dass allecmd
Fenster wie folgt ausgeblendet werden:quelle
Es scheint, dass jemand eine Liste der 7-8 Möglichkeiten erstellt hat, 'silent' zu betreiben:
quelle
Sie können auch ein AutoHotkey- Skript erstellen :
quelle
In C / C ++ können Sie die CreateProcess-Funktion auch mit dem CREATE_NO_WINDOW-Flag verwenden. Es hat viel zusätzliche Kraft, die hier nicht gezeigt wird. Dies ist nur das Minimum, das Sie benötigen, um system () oder die _spawn () -Familie zu ersetzen.
quelle
Der exzellente Bat To Exe Converter konvertiert Ihre
.bat
oder.cmd
-Datei in eine.exe
Datei.Es hat eine einfache Benutzeroberfläche. Sie können festlegen, dass kein Konsolenfenster angezeigt wird, indem Sie die Option "Unsichtbare Anwendung" auswählen. Außerdem können Sie ein Symbol zuweisen, zugehörige Dateien paketieren und verschiedene andere Optionen auswählen.
Hier ist ein Screenshot des Hauptfensters der Benutzeroberfläche:
Beachten Sie, dass dieses Bild nicht mehr aktuell ist. Es zeigt die Version 2.4.8 und ab September 2018 bietet die Website die Version 3.0.10.0 (letzte Aktualisierung am 23.03.2018).
Achtung: Nur die www.f2ko.de Website Links zu
coinhive.com
, das ist weit identifiziert als Malware .quelle
Ich habe es mit nircmd erfolgreich so gemacht:
nircmd.exe win hide ititle "cmd.exe"
Jetzt haben Sie eine .exe-Datei, die nach dem Doppelklick und der Installation Ihrer .bat-Datei vollständig ausgeblendet wird.
quelle
quelle
'cmdow' is not recognized as an internal or external command, operable program or batch file.
Sie müssen keine besonderen Dinge tun.
Wenn Sie die Batchdateien von einem Windows-Dienst ausführen, sollten sie standardmäßig ausgeblendet sein, es sei denn, Sie aktivieren die Option "Interaktion des Dienstes mit dem Desktop zulassen" für den Dienst.
quelle
Erstellen Sie Ihre Batch - Skript mit Batch - Logik und Befehle in ihm, und dann eine neue Datei mit erstellen
.VBS
Erweiterung, verwenden Sie die folgende Logik (Beispiel I unten angegeben) und schließen Sie einfach den vollständigen Pfad zu Ihrem.CMD
oder.BAT
mit der DateiPING -t <IPAddress>
usw. Befehle so Es führt den Stapel auf versteckte Weise aus und zeigt das Befehlsfenster nicht an, wenn es ausgeführt wird.Wo die Logik im folgenden Beispiel angibt,
C:\Folder\BatchFileName.cmd
ändern Sie dies, um mit Ihren Befehlen, die Sie jetzt manuell ausführen, usw. auf das Stapelskript zu verweisen.Speichern Sie die
.VBS
Datei und planen Sie sie mitTask Scheduler
Probleme beim Planen einer Aufgabe unter Windows7 , damit sie nach einem unbestimmten Zeitplan für Ihre Anforderungen ausgeführt wird.Andernfalls doppelklicken Sie einfach auf die
.VBS
Datei, um den unbegrenztenPING
Befehl auszuführen, den Sie in die Batch-Datei eingegeben haben, auf die Sie bei Bedarf zeigen.ANMERKUNG: Ich glaube, hierher stammt diese Skriptlogik, aber sie funktioniert zuverlässig für denselben Zweck, den Sie hier benötigen, um sicherzustellen, dass das Befehlsfenster ausgeblendet ist, wenn eine Batchdatei ausgeführt wird. Serverfehlerquelle
BEISPIEL VBS SCRIPT RUN BEFEHLSZEILENBATCH, DER CMD-FENSTER AUSBLENDET
quelle
Hier habe ich alle Möglichkeiten zusammengestellt, die ich kenne, um einen versteckten Prozess mit Batch ohne externe Tools zu starten PID wird zurückgegeben. Verwendete Tools sind IEXPRESS, SCHTASKS, WScript.Shell, Win32_Process und JScript.Net
quelle
Trotzdem habe ich hier schon einen anderen Ansatz beantwortet. Der Unterschied besteht darin, dass sich das Batch-Skript während der Ausführung selbst verstecken kann. Sie benötigen jedoch zwei zusätzliche Skripts - windowMode.bat und getCMDPid.bat (beide enthalten
.net
Code). Hier, wie dann verwendet werden kann:quelle
Ich hatte das gleiche Problem, fand es aber heraus:
Shell("filehere" & "parametersforbatchfilehere", vbHidden)
quelle
Ich fing an, das herauszufinden und es gelang mir nie wirklich. Das war so nah wie ich gekommen bin:
quelle
Ich musste das Fenster für eine Batch-Datei, die aus einem Explorer-Kontextmenü aufgerufen wurde, ausblenden und dem Parameter auch Anführungszeichen hinzufügen. Keine der Antworten hat für mich funktioniert, daher füge ich meine eigene Lösung hinzu.
Ich hatte dies in der Registrierung "Befehl" für ein Explorer-Kontextmenü:
Um es zu ersetzen, musste ich ein vbs wie dieses erstellen:
Speichern Sie an einem Ort wie
C:\mypath\myscript.vbs
und nennen Sie es in der Registrierung so:Beachten Sie, dass der Pfad .bat keine Leerzeichen enthalten darf. Ersetzen Sie ihn daher durch den Dateinamen 8.3. So muss zum Beispiel
C:\Program Files\myprogram.bat
als verwiesen werdenC:\Progra~1\myprogram.bat
. Verwenden Sie, um den 8.3-Dateinamen anzuzeigendir /x
quelle
Ich habe RunApp dafür erstellt und benutze es auch in meiner Produktionsumgebung. Ich hoffe, es hilft.
Die Konfiguration wie folgt:
Datei: config.arg
Und
runapp.exe
stattdessen starten .quelle
Dies funktioniert für Windows 8 (möglicherweise andere)
Klicken Sie auf Übernehmen
Klicken Sie auf die Verknüpfung und es wird ausgeführt, aber Sie werden es nicht sehen :)
quelle