我从这个网站上的其他帖子和我的初学知识中创建了这个批处理文件。它的目的是在设定时间后关闭或使计算机进入睡眠状态,以便我可以将其保留完成任务,而不必在完成后整夜运行。
问题在于,如果我运行关闭命令,它似乎会关闭电源,但打开时会恢复所有打开的应用程序,并且有时无法正确启动。(例如,需要启动1-2次才能实际上开机,而不是在几分钟后再次关闭。)
正在运行全新安装的Windows 10家庭版x64
这是我的文件的完整代码:
问题在于,如果我运行关闭命令,它似乎会关闭电源,但打开时会恢复所有打开的应用程序,并且有时无法正确启动。(例如,需要启动1-2次才能实际上开机,而不是在几分钟后再次关闭。)
正在运行全新安装的Windows 10家庭版x64
这是我的文件的完整代码:
@echo off
color 3F
mode con: cols=52 lines=5
echo Minutes until event?
set /p min=
set /a sec="min * 60"
echo Shutdown-1 or Sleep-2
set /p eventtype=
if %eventtype%==1 goto :shutdown
if %eventtype%==2 goto :sleep
:shutdown (
cls
echo Shutdown in %min% minutes at:
for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
set timeHour=%%a
set timeMinute=%%b
set timeSeconds=%%c
)
rem Convert HH:MM to minutes + %min%
set /A newTime=timeHour*60 + timeMinute + %min%
rem Convert new time back to HH:MM
set /A timeHour=newTime/60, timeMinute=newTime%%60
rem Adjust new hour and minute
if %timeHour% gtr 23 set timeHour=0
if %timeHour% lss 10 set timeHour=0%timeHour%
if %timeMinute% lss 10 set timeMinute=0%timeMinute%
echo %timeHour%:%timeMinute%:%timeSeconds%
timeout /t %sec% /nobreak
start shutdown.exe /s /t 00
)
:sleep (
cls
echo Sleep in %min% minutes at:
for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
set timeHour=%%a
set timeMinute=%%b
set timeSeconds=%%c
)
rem Convert HH:MM to minutes + %min%
set /A newTime=timeHour*60 + timeMinute + %min%
rem Convert new time back to HH:MM
set /A timeHour=newTime/60, timeMinute=newTime%%60
rem Adjust new hour and minute
if %timeHour% gtr 23 set timeHour=0
if %timeHour% lss 10 set timeHour=0%timeHour%
if %timeMinute% lss 10 set timeMinute=0%timeMinute%
echo %timeHour%:%timeMinute%:%timeSeconds%
timeout /t %sec% /nobreak
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
)
start shutdown.exe /s /t 00
,在这种情况下它是否能够正常关机? - PKey/t 00
怎么不会关机,但同时又说“当在事件前不到5分钟运行时有效”。然而,根据你最后的回答,我认为你应该更改电源设置,这样它就不会在空闲一段时间后进入睡眠状态...看一下这里...可能有帮助。 - PKey