Ich habe eine geplante Aufgabe, die ein Stapelskript startet, das robocopy
jede Stunde ausgeführt wird. Jedes Mal, wenn es ausgeführt wird, erscheint auf dem Desktop ein Fenster mit der Ausgabe von robocopy, die ich eigentlich nicht sehen möchte.
Ich konnte das Fenster minimieren, indem ich den geplanten Job ausführen ließ
cmd /c start /min mybat.bat
das gibt mir aber jede stunde ein neues befehlsfenster. Ich war überrascht darüber, dass cmd /c
"den durch string angegebenen Befehl ausführt und dann beendet" - ich muss die Dokumente falsch verstanden haben.
Gibt es eine Möglichkeit, ein Batch-Skript auszuführen, ohne ein Cmd-Fenster aufzurufen?
Antworten:
Sie können es stattdessen im Hintergrund mithilfe einer Windows-Skriptdatei ausführen. Mit der Run-Methode können Sie ein Skript im unsichtbaren Modus ausführen. Erstellen Sie eine
.vbs
Datei wie dieseund planen Sie es. Das zweite Argument in diesem Beispiel legt den Fensterstil fest. 0 bedeutet "Fenster verstecken".
Vollständige Syntax der Run-Methode :
Argumente:
quelle
Führen Sie dies als geplante Aufgabe aus? Wenn dies so eingestellt ist, dass es als ein anderes Benutzerkonto ausgeführt wird, ist es für den angemeldeten Benutzer nicht sichtbar. Wenn das Skript keinen Netzwerkzugriff auf Elemente benötigt, für die Windows-Authentifizierung erforderlich ist (z. B. Dateifreigaben oder Drucker), können Sie es als "nt authority \ system" ausführen und das Kennwort leer lassen. Setzen Sie unter Windows 7 den Benutzer einfach auf SYSTEM und drücken Sie OK.
(Sie müssen jedoch wahrscheinlich einen echten Benutzer verwenden, wenn Sie Robocopy verwenden ...)
JR
quelle
Konfigurieren Sie die geplante Aufgabe einfach als "Ausführen, ob der Benutzer angemeldet ist oder nicht".
quelle
Sie können auch CHP (Versteckten Prozess erstellen) ausprobieren und genau das tun, was Sie denken ...
Läuft ohne Befehlsfenster. Perfekt! Hergestellt von denselben Leuten wie CMDOW, aber dies ist angemessener.
quelle
CMDOW ist ein großartiges Tool, mit dem Sie von der Befehlszeile aus viele, viele Dinge an Fenstern ausführen können.
Eine der einfachsten Aufgaben ist das Ausblenden des aktuellen Fensters (normalerweise als erste Zeile in der bat-Datei) mit:
oder starten Sie einen neuen versteckten Prozess mit
quelle
Versuchen Sie, das Skript mit aufzurufen
quelle
start
es kein Programm ist, ist es ein Befehl. Sie müssencmd
als auszuführendes Programm und/c start /b <file>
als Argument angeben . Dies wird jedoch immer noch nicht funktionieren, da weiterhin ein Konsolenfenster erstelltcmd
und ein schwarzes Fenster auf dem Bildschirm angezeigt wird.Sie können eine Verknüpfung zur Stapeldatei erstellen, die Verknüpfung so einstellen, dass sie minimiert gestartet wird (in den Eigenschaften der Verknüpfung, Registerkarte "Verknüpfung") und dann den Job zum Starten der Verknüpfung festlegen.
Wichtig : Sie müssen den Pfad zur Verknüpfung manuell angeben, indem Sie ihn in das Textfeld "Ausführen" mit der Erweiterung ".lnk" eingeben. Wenn Sie nur versuchen, dorthin zu navigieren, leitet sich das Programm automatisch zu dem weiter, auf das die Verknüpfung verweist.
quelle
Mir ist klar, dass diese Frage bereits mit einer vollkommen guten Auflösung beantwortet wurde, die ursprünglich für Windows entwickelt wurde und daher die kompatibelste sein sollte, und ich stimme vollkommen zu.
Ich wollte auch sagen, dass ich mit @ splattnes Kommentar nicht einverstanden bin (aber nicht mit seiner tatsächlichen Antwort) - dass die Auflösung in dem anderen Thread, auf den verwiesen wird, die Anerkennung verdient. Diese Antwort beinhaltet das Ausführen des Skripts als ein anderer Benutzer (SYSTEM), was so ziemlich dem Gewähren des Skriptstammzugriffs entspricht. Es schlägt auch für Jobs wie
ROBOCOPY
(wie von John Rennie angegeben) fehl , die Netzwerkzugriff erfordern.Ich habe es noch nie versucht
CMDOW
, aber ich möchte eine andere ähnliche Auflösung anbieten, die [obwohl sie unter Windows nicht nativ installiert ist] für die meisten Versionen hoch portierbar ist und sowohl in der 32- als auch in der 64-Bit-Version verfügbar ist NirCmd .NirCmd ist ein sehr leistungsfähiges Tool mit unzähligen Optionen. Das nützlichste ist meiner Meinung nach die Möglichkeit, versteckte Befehlsfenster zu starten, indem Sie einfach Folgendes ausführen:
Aus dem
exec
Abschnitt der NirCmd-Befehlsreferenz :Führt eine Anwendung aus und gibt optional einen oder mehrere Befehlszeilenparameter für die ausgeführte Anwendung an. Der Parameter [show / hide / min / max] gibt an, ob die ausgeführte Anwendung angezeigt wird oder nicht. Wenn 'hide' angegeben wird, ist die ausgeführte Anwendung für den Benutzer nicht sichtbar. Wenn 'max' angegeben ist, wird das laufende Anwendungsfenster maximiert. Wenn 'min' angegeben wird, wird das laufende Anwendungsfenster minimiert.
BEARBEITEN: Ich habe versucht, einen
ROBOCOPY
Job auszuführen und habe die Methode in dieser Antwort ausprobiert, und sie hat auch nach dem Bearbeiten der Netzwerkzugriffsberechtigungen nicht funktioniert. Ich habe versucht, auf das Skript zu doppelklicken, und konnte es nicht zum Laufen bringen, sondern nur unter einer Eingabeaufforderung mit erhöhten Rechten ausführen. Ich habe eine Verknüpfung zur Batch-Datei erstellt und sie als Administrator ausführen lassen und konnte sie durch Doppelklicken ausführen, aber die Methode, die ich letztendlich gewählt habe, war, sie versteckt als SYSTEM auszuführen (ich weiß, ich weiß). - aber es funktioniert mitROBOCOPY
, was es wert ist, solange die Batch-Datei die richtigen Berechtigungen hat.EDIT 2: Aus irgendeinem Grund würde es nicht als SYSTEM funktionieren (wahrscheinlich das zuvor erwähnte Netzwerkzugriffsobjekt) - ich habe dies erst bemerkt, nachdem ich
ROBOCOPY
das / L-Flag tatsächlich ausgeführt habe , was im Grunde genommen nur eine Simulation ist und [anscheinend] nicht Stellen Sie eine Verbindung zum Remote-System her, aber wenn ich die Batch-Datei mit den höchsten Berechtigungen ausführe und das Kontrollkästchen "Versteckt" aktiviere, kann ich sie trotzdem als angemeldeter Benutzer im Hintergrund ausführen, ohne dass ein Befehlsfenster angezeigt wird .quelle
Eine andere Lösung, die ich verwendet habe, ist Hidden Start
quelle
Versuchen Sie, am Ende Ihrer Batch-Datei einen Exit-Befehl einzugeben. Dies sollte das Befehlsfenster schließen, wenn das Skript fertig ist.
quelle
Fügen Sie zum Ausblenden der Ausgabe (jedoch nicht des Fensters) Folgendes an den Anfang Ihrer Batchdatei ein:
quelle