首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量关机命令行为类似睡眠命令,如何修复?

批量关机命令行为类似睡眠命令,如何修复?
EN

Stack Overflow用户
提问于 2017-03-17 17:10:45
回答 2查看 313关注 0票数 3

我创建了这个批文件的帮助,在这个网站上的其他帖子与什么初学者的知识,我有混合。它的目的是要么关机,要么在设定的时间后睡觉,这样我就可以让它完成一项任务,而不需要在它完成后整夜运行。

问题是,如果我运行关闭命令,它似乎会关闭,但当打开任何打开的应用程序,有时不能正确启动。(例如,它需要1到2倍的电源才能真正启动,而不是过一会儿再关机。)

运行新安装的Windows 10家庭x64

以下是文件的完整代码:

代码语言:javascript
复制
@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
)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-17 22:57:33

现在起作用了!感谢@Compo和@Plirkee的投入。

下面是编辑好的全功能代码,如果有人想自己使用它的话:

代码语言:javascript
复制
@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
shutdown /p
: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
票数 1
EN

Stack Overflow用户

发布于 2017-03-17 18:56:09

我注意到您关闭的方式是使用shutdown.exe。您只需使用shutdown命令即可。而不是start shutdown.exe /s /t 00,您可以拥有shutdown /s /t 00

这可能是也可能不是解决办法,但值得一试。至少,这为您节省了10个字符。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42863432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档