批处理脚本,时间变量

时间:2017-03-25 12:32:37

标签: batch-file command-prompt

我遇到了我编写的代码问题并且一直试图批量运行。这是:

echo off

SETLOCAL

set a==%time /t%
if (a!=18:00) goto stop
else goto start

:start
net stop "spooler"
timeout 3 > null
echo "it is done"
timeout 5 > null
echo "now we restarting the service"
timeout 3 > null
net start "spooler"

:stop
PAUSE
ENDLOCAL  

它应该做的是检查机器验证的当前时间与代码中预先调节的时间,如果它不匹配或不相符,则相应地采取行动。我不知道为什么(可能是因为我是新手)它会返回错误消息,上面写着:

  

= 18:00此时出乎意料

有什么建议吗?

提前致谢,

R上。 Shahin的

1 个答案:

答案 0 :(得分:0)

要将命令结果分配给变量,您需要使用for /f 如果命令不支持类c语法。除此之外,您还有内置的%time%变量。你需要使用像if %my_time% neq 18:00这样的东西。请注意%time%(和时间命令)取决于时间设置。尝试这样的事情:

@echo off
pushd "%temp%"
makecab /D RptFileName=~.rpt /D InfFileName=~.inf /f nul >nul
for /f "tokens=3-7" %%a in ('find /i "makecab"^<~.rpt') do (
   set "current-time=%%d"

)
del ~.*
popd

set hours=%current-time:~0,2%
set minutes=%current-time:~3,2%

echo %hours%%minutes%

if "%hours%%minutes%" neq "1800" (
  goto stop
) else (
  goto start
)
....