3

由于早上起床的巨大问题,我决定编写一个在给定时间执行特定文件的批处理脚本。但是,当我让我的计算机长时间闲置时它不起作用,看起来循环本身不再循环了。

我无法理解是什么导致它无法工作,因为我的屏幕保护程序和 CPU/HDD-sleep 已关闭。

这是代码:

echo OFF

@echo Set hour for alarm:
set /p hour=
@echo Set minute for alarm:
set /p minute=

@echo alarm will ring at %hour% : %minute%

:waitDay
for /f "tokens=5-8 delims=:. " %%a in ('echo/^|time') do (
  set hh=%%a
)

IF %hh% GTR %hour% GOTO waitDay


:start
for /f "tokens=5-8 delims=:. " %%a in ('echo/^|time') do (
  set hh=%%a&set nn=%%b&set ss=%%c&set cs=%%d
)

IF %hh% LSS %hour% GOTO start
IF %nn% LSS %minute% GOTO start

cd \d C:
cd \d C:\Users\Oted\Desktop\Stuff\
"alarm.xspf"

很高兴有人可以提供帮助,我使用的是 Windows 7。

4

2 回答 2

1

尝试这个...

@ECHO OFF
setlocal

set /p exectime=Enter when you want the task to execute (HH:MM): 
set batchfilelocation=C:\Users\Oted\Desktop\Stuff\alarm.xspf

SCHTASKS /create /SC DAILY /TN "WAKEUP" /TR "%batchfilelocation%" /S %computername%
pause
endlocal

REM /SC allows for the following frequency schedules:
REM     MINUTE:     1 - 1439 minutes.
REM     HOURLY:     1 - 23 hours.
REM     DAILY:      1 - 365 days.
REM     WEEKLY:     weeks 1 - 52.
REM     ONCE:       No modifiers.
REM     ONSTART:    No modifiers.
REM     ONLOGON:    No modifiers.
REM     ONIDLE:     No modifiers.
REM     MONTHLY:    1 - 12, or FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY.

这是由朋友创建的,我只是对其进行了编辑以适应这种情况。

这将为您想要唤醒的任何时间创建一个计划任务。

最初由iesou创建

于 2013-03-08T15:25:14.760 回答
0

我已经重写了你的脚本,所以它更容易阅读,我认为你遇到的问题与 3 条底线有关。

您放置\d而不是/d意味着它不会更改目录,因此尝试运行该文件alarm.xspf会失败,因为它不在正确的文件夹中。

@echo off
set /p hour=Set hour for alarm: 
set /p minute=Set minute for alarm: 
echo Alarm will ring at %hour%:%minute%

:waitDay
for /f "tokens=1 delims=:" %%a in ("%time%") do (
set hh=%%a
)

if %hh% gtr %hour% goto :waitDay

:start
for /f "tokens=1 delims=:" %%a in ("%time%") do (
set hh=%%a
set mm=%%b
set ss=%%c
set ms=%%d
)

if %hh% lss %hour% goto :start
if %mm% lss %minute% goto :start

C:\Users\Oted\Desktop\Stuff\alarm.xspf
于 2012-11-29T15:34:17.667 回答