Batchdatei, die an einem besonderen Tag ausgeführt wird

Batchdatei, die an einem besonderen Tag ausgeführt wird

Wie erstelle ich eine Batchdatei, die beim Anklicken eine EXE-Datei startet, wenn Sonntag ist?

Ich möchte nicht, dass die EXE-Datei ausgeführt wird, wenn es ein anderer Tag ist. Wenn es zum Beispiel Freitag ist, möchte ich, dass es sich einfach selbst schließt und nichts tut.

Außerdem wäre es schön, wenn es möglich wäre, es im Hintergrund auszuführen, ohne eine Eingabeaufforderung anzuzeigen.

Antwort1

Task SchedulerHierzu können Sie Folgendes verwenden : Öffnen Task Scheduler > Create Task Im geöffneten Dialog können Sie nun die Eigenschaften und Bedingungen für die Ausführung der Aufgabe festlegen sowie den auszuführenden Job/die auszuführende Anwendung definieren.

Aufgabenplanung

Antwort2

Tatsache ist, dass Sie eine erweiterte Befehlsfunktion date(Wochentag) verwenden möchten, die Windows im DOS-Batch nicht verwalten kann.

Hierzu würde ich eine Binärdatei eines Drittanbieters verwenden date.exe, die aus der Unix-Welt stammt und unter Windows funktioniert:UnxUtils(das ist eine Sammlung gängiger GNU Unix-Dienstprogramme, die unter Windows ausgeführt werden).

Laden Sie es herunter vonHier(UnxUtils.zip).

Dann extrahieren Sie es und löschen Sie alle Dateien außerdate.exe

Schreiben Sie dann eine Batchdatei wie diese (vorausgesetzt, date.exesie befindet sich auf c:\):

@ECHO OFF
REM Sunday is 0
for /f "delims=" %%a in ('c:\date.exe +%%w') do set DayOfWeek=%%a
if %DayOfWeek% == 0 (
  cmd /c c:\path\to\exe\file.exe
) else (
  echo Do Nothing
)

Sie können es in den Windows-Startordner legen und es funktioniert auf allen Windows-Versionen, unabhängig davon, wo auf der Welt Sie sich befinden.


Auch(viel besser), damals waren DOS-Batch-Programme schon etwas veraltet. Da Sie von Windows 8 sprechen, würde ich Powershell in Betracht ziehen (kann bei Bedarf von einer Batch-Datei aufgerufen werden):

$a = Get-Date
if($a.DayOfWeek -eq "Sunday") {
    cmd /c c:\path\to\exe\file.exe
}

Hier ist keine Binärdatei von Drittanbietern erforderlich: Powershell ist leistungsstark ;)

Antwort3

EntsprechendHIERist es unmöglich, eine Batchdatei mit der integrierten Eingabeaufforderung auszuführen, ohne dass ein Fenster angezeigt wird.

Schließlich landete ich beiDASSeite und verwendete die Informationen, um eine Batchdatei zu erstellen, die das tut, was Sie möchten. Das Batchskript überprüft die Uhrzeit. Wenn es nicht der richtige Tag ist, blinkt die Eingabeaufforderung rot und wird beendet. Wenn es der richtige Tag ist, blinkt sie grün und startet Ihr Programm, während es beendet wird.

Alle im obigen Absatz beschriebenen Vorgänge geschehen in weniger als einer Sekunde (abhängig von der Geschwindigkeit Ihres Computers) und fallen daher kaum auf.

@echo off

mode con: cols=16 lines=6

:: The file you want to launch.
set FILE=PATH_TO_FILE

:: The day you want to launch the file on.
set DAY=Sun

for /F "tokens=1 delims= " %%A in ('Date /t') do ( Set TODAY=%%A )
if %TODAY% == %DAY% goto START

:STOP
color 47
goto END

:START
color 27

start "" "%FILE%"
goto END

:END
exit

Sie müssen zwei Dinge in der Batchdatei ändern, um sicherzustellen, dass sie Ihren Anforderungen entspricht.

  1. Zuerst müssen Sie PATH_TO_FILEin Zeile 7 den Pfad der ausführbaren Datei ändern, die Sie starten möchten.
  2. Zweitens müssen Sie möglicherweise Zeile 10 ändern. SunDies muss möglicherweise in die ersten drei Buchstaben des Tages geändert werden, an dem Sie die ausführbare Datei starten möchten (wenn Sie sie nicht am Sonntag starten möchten).

verwandte Informationen