2012-11-29 37 views
3

由於在早上起牀時遇到了巨大的問題,我決定編寫一個批處理腳本,在給定的時間執行特定的文件。但是,當我將電腦閒置較長時間時,它不起作用,似乎循環本身不再循環。批處理警報文件不會關閉

我不能理解是什麼原因導致此問題無法解決,因爲我的屏幕保護程序和CPU/HDD睡眠已關閉。

下面是代碼:

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

+0

創建請編輯您的問題,包括有關使用操作系統的信息。還要將該通知添加爲標籤。謝謝! – arkascha

+3

爲什麼不使用Windows Scheduled Task在應該啓動鬧鐘的時候啓動鬧鐘,而不是整夜持續運行一個循環(因此使用CPU並浪費能源並增加系統的磨損)?它也更方便 - 你不必記住設置它,你可以編程它只運行某些日子(例如,工作日)或在不同日子的不同時間運行等。 –

回答

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 
+0

哦,謝謝你,先生!我試過了,問題仍然存在,我不知道它是否與批處理文件本身有關。也許是我的電腦阻止腳本在更長時間後繼續運行。任何人有什麼建議,這可能是什麼? – user1862925

+0

@ user1862925可能吧,儘管我認爲它應該可以正常工作。我也認爲有更好的安排警報的方法。如果你想從'schtasks /?'和'at /?'批量查看,這將給你更容易的選項來安排你的鬧鐘。 –

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

相關問題