17

如何创建批处理文件计时器以在一天中执行/调用另一个批处理可能在给定时间运行但不在周末运行?必须在系统时间上运行也可以是.cmd 才能在xp server 2003上运行

4

9 回答 9

34

对于脚本的计时器部分,我强烈建议使用:

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

如果您不想在屏幕上看到倒计时。

于 2010-12-02T21:21:17.587 回答
11

我会使用调度程序(控制面板)而不是 cmd 行或其他应用程序。

控制面板 -> 计划任务

于 2008-11-18T17:18:17.900 回答
4

下面是一个批处理文件,它将等待 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

它可以在许多方面进行改进,但它可能会让你开始。

于 2009-01-29T20:02:20.890 回答
3

AT 命令可以做到这一点,但这就是 Scheduled Tasks gui 的用途。在 cmd 窗口中输入“help at”以获取详细信息。

于 2008-11-19T15:09:54.227 回答
1

我通过编写一个小 C# 应用程序来做到这一点,该应用程序刚刚唤醒以启动定期任务——不知道它是否可以从批处理文件中执行,而无需下载扩展程序以支持睡眠命令。(出于我的目的,Windows 调度程序不起作用,因为启动的应用程序没有可用的图形上下文。)

于 2008-11-18T17:14:58.687 回答
1
@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
于 2014-04-19T15:28:15.783 回答
1
@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 
于 2016-01-29T11:18:50.190 回答
1

不涉及 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 分钟,但是你可以设置任何你想要的时间

于 2019-08-11T18:21:21.530 回答
0

你也可以这样做>

@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

或类似的东西。

于 2013-11-30T19:06:54.570 回答