it-swarm.com.de

Wie erstelle ich einen Batch-Datei-Timer, um einen anderen Batch im Laufe des Tages auszuführen/aufzurufen

Wie erstelle ich einen Batch-Datei-Timer, um einen anderen Batch im Laufe des Tages auszuführen/aufzurufen? Vielleicht zu bestimmten Zeiten ausgeführt, aber nicht an Wochenenden. Muss auf Systemzeiten ausgeführt werden, kann auch .cmd sein, um auf XP Server 2003 ausgeführt zu werden 

14
Trevor

Für den Timer-Teil Ihres Skripts empfehle ich Folgendes:

echo.
echo Waiting For One Hour... 
TIMEOUT /T 3600 /NOBREAK
echo.
echo (Put some Other Processes Here)
echo.
pause >nul

Dieses Skript wartet 1 Stunde (3600 Sekunden) und fährt dann mit dem Skript fort. Der Benutzer kann keine Tasten drücken, um den Timer (außer STRG + C) zu umgehen.

Sie können verwenden 

Timeout /t 3600 /nobreak >nul

Wenn Sie keinen Countdown auf dem Bildschirm sehen möchten.

31
daniel11

Ich würde den Scheduler (Systemsteuerung) anstelle einer Cmd-Zeile oder einer anderen Anwendung verwenden.

Systemsteuerung -> Geplante Aufgaben

11
Tim

Unten ist eine Batchdatei, die 1 Minute wartet, den Tag überprüft und dann eine Aktion ausführt. Es verwendet PING.EXE, erfordert jedoch keine Dateien, die nicht in Windows enthalten sind.

@ECHO OFF

:LOOP
ECHO Waiting for 1 minute...
  PING -n 60 127.0.0.1>nul
  IF %DATE:~0,3%==Mon CALL SomeOtherFile.cmd
  IF %DATE:~0,3%==Tue CALL SomeOtherFile.cmd
  IF %DATE:~0,3%==Wed CALL SomeOtherFile.cmd
  IF %DATE:~0,3%==Thu CALL WootSomeOtherFile.cmd
  IF %DATE:~0,3%==Fri CALL SomeOtherFile.cmd
  IF %DATE:~0,3%==Sat ECHO Saturday...nothing to do.
  IF %DATE:~0,3%==Sun ECHO Sunday...nothing to do.
GOTO LOOP

Es könnte in vielerlei Hinsicht verbessert werden, aber es könnte Ihnen den Einstieg erleichtern.

4
aphoria

Der Befehl AT würde das tun, aber dafür gibt es die geplante Aufgaben-GUI. Geben Sie "help at" in einem Cmd-Fenster ein, um weitere Informationen zu erhalten.

3
SumoRunner
@echo off
:Start
title timer
color EC
echo Type in an amount of time (Seconds)
set /p time=

color CE

:loop
cls
ping localhost -n 2 >nul
set /a time=%time%-1
echo %time%
if %time% EQU 0 goto Timesup
goto loop

:Timesup
title Time Is Up!
ping localhost -n 2 >nul
ping localhost -n 2 >nul
cls
echo The Time is up!
pause
cls
echo Thank you for using this software.
pause
goto Web
goto Exit

:Web
rem type ur command here

:Exit
Exit
goto Exit
1
adwait

Ich habe es geschafft, indem ich eine kleine C # -App schrieb, die nur wacht, um periodische Aufgaben zu starten. Ich weiß nicht, ob dies von einer Batchdatei aus möglich ist, ohne Erweiterungen herunterzuladen, die einen Schlafbefehl unterstützen. (Für meine Zwecke funktionierte der Windows-Scheduler nicht, da für die gestarteten Apps kein Grafikkontext verfügbar war.)

1
Jeff Kotula
@echo off
:Start # seting a ponter
title timer  #name the cmd window to "Timer"
echo Type in an amount of time (Seconds)  
set /p A=  #wating for input from user
set B=1  

cls  
:loop  
ping localhost -n 2 >nul  #pinging your self for 1 second
set /A A=A-B  #sets the value A - 1
echo %A%  # printing A
if %A% EQU 0 goto Timesup  #if A = 0 go to ponter Timesup eles loop it
goto loop

:Timesup  #ponter Timesup
cls  #clear the screen
MSG * /v "time Is Up!"  #makes a pop up saying "time Is Up!"
goto Exit  #go to exit

:Exit 
1
nocktok toker

Sie könnten dies auch tun>

@echo off
:loop
set a=60
set /a a-1
if a GTR 1 (
echo %a% minutes remaining...
timeout /t 60 /nobreak >nul
goto a
) else if a LSS 1 goto finished
:finished
::code
::code
::code
pause>nul

Oder sowas ähnliches.

besserer Code ohne Ping:

SET COUNTER=0
:loop
SET /a COUNTER=%COUNTER%+1
XCOPY "Server\*" "c:\minecraft\backups\server_backup_%COUNTER%" /i /s
timeout /t 600 /nobreak >nul
goto loop

600 Sekunden sind 10 Minuten, Sie können sie jedoch jederzeit einstellen

0
Patrick Warren