web-dev-qa-db-ja.com

1日を通して別のバッチを実行/呼び出すためのバッチファイルタイマーを作成する方法

バッチファイルタイマーを作成して、1日を通して別のバッチを実行または呼び出すには、週末には実行しないで、特定の時間に実行する方法はありますか。 xpサーバー2003で実行するには、システム時間で実行する必要があります。

14
Trevor

スクリプトのタイマー部分については、以下を使用することを強くお勧めします。

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

このスクリプトは1時間(3600秒)待機してからスクリプトを続行し、ユーザーはボタンを押してタイマーをバイパスできません(CTRL + Cを除く)。

使用できます

Timeout /t 3600 /nobreak >nul

画面にカウントダウンを表示したくない場合。

32
daniel11

Cmd行やその他のアプリケーションではなく、スケジューラー(コントロールパネル)を使用します。

コントロールパネル->スケジュールされたタスク

11
Tim

以下は、1分間待機し、日をチェックしてからアクションを実行するバッチファイルです。 PING.EXEを使用しますが、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

それは多くの方法で改善される可能性がありますが、あなたが始められるかもしれません。

4
aphoria

ATコマンドはそれを行いますが、それがScheduled Tasks guiの目的です。詳細については、cmdウィンドウに「help at」と入力してください。

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

私は定期的なタスクを起動するために目覚めるだけの小さなC#アプリを作成しました-スリープコマンドをサポートする拡張機能をダウンロードせずにバッチファイルから実行できるかどうかわかりません。 (私の目的では、起動したアプリに利用可能なグラフィックスコンテキストがなかったため、Windowsスケジューラは機能しませんでした。)

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

これもできます>

@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

またはそのようなもの。

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秒は10分ですが、好きな時間に設定できます

0
Patrick Warren