web-dev-qa-db-fra.com

Comment créer un compteur de fichiers batch pour exécuter/appeler un autre lot tout au long de la journée

Comment créer un minuteur de fichier batch pour exécuter/appeler un autre lot toute la journée Peut-être à des heures précises pour s'exécuter mais pas pour le week-end? .Cmd doit également être exécuté aux heures système pour être exécuté sur un serveur xp 2003 

14
Trevor

Pour la partie minuterie de votre script, je vous recommande vivement d'utiliser:

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

Ce script attend pendant 1 heure (3600 secondes), puis continue avec le script et l'utilisateur ne peut appuyer sur aucun bouton pour contourner le temporisateur (outre CTRL + C).

Vous pouvez utiliser 

Timeout /t 3600 /nobreak >nul

Si vous ne voulez pas voir un compte à rebours à l'écran.

31
daniel11

J'utiliserais le planificateur (panneau de configuration) plutôt qu'une ligne de commande ou une autre application.

Panneau de configuration -> tâches planifiées

11
Tim

Vous trouverez ci-dessous un fichier de commandes qui attend 1 minute, vérifie le jour puis effectue une action. Il utilise PING.EXE, mais ne nécessite aucun fichier non fourni avec Windows.

@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

Il pourrait être amélioré de plusieurs façons, mais cela pourrait vous aider à démarrer.

4
aphoria

La commande AT ferait cela, mais c'est à cela que sert l'interface graphique des tâches planifiées. Entrez "help at" dans une fenêtre de commande pour plus de détails.

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

Je l'ai fait en écrivant une petite application C # qui se réveille juste pour lancer des tâches périodiques - je ne sais pas si c'est faisable à partir d'un fichier batch sans télécharger des extensions pour prendre en charge une commande de veille. (Pour ce faire, le planificateur Windows ne fonctionnait pas car les applications lancées n'avaient pas de contexte graphique disponible.)

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

Vous pouvez aussi faire ça>

@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

Ou quelque chose comme ça.