Batch file 批处理脚本,时间变量

Batch file 批处理脚本,时间变量,batch-file,command-prompt,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 sta

我写的代码有问题,并且一直试图批量运行。这是:

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

将命令结果分配给需要使用的变量 If命令不支持类似c的语法。此外,还有内置的
%time%
变量。如果%my_time%neq 18:00,则需要使用类似于
的内容。请注意,%时间%(和时间命令)取决于时间设置。试着这样做:

@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
)
....
@echo关闭
pushd“%temp%”
makecab/D RptFileName=~.rpt/D InfFileName=~.inf/f nul>nul

对于('find/i“makecab”^中的/f“tokens=3-7”%%a,将命令结果分配给需要使用的变量 If命令不支持类似c的语法。此外,您还有内置的
%time%
变量。如果%my\u time%neq 18:00
,则需要使用类似
的内容。请注意%time%(和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
)
....
@echo关闭
pushd“%temp%”
makecab/D RptFileName=~.rpt/D InfFileName=~.inf/f nul>nul

对于('find/i“makecab”^中的/f“tokens=3-7”%%a,谢谢。我已经添加了您的代码并运行了它,返回的错误消息是:“|此时是意外的”@echo off pushd”%temp%”makecab/D RptFileName=~.rpt/D InfFileName=~.inf/f nul>nul for/f“tokens=3-7%%a in('find/i“makecab”^谢谢。我已经添加了您的代码并运行了它,它返回的错误消息是:“|此时是意外的”@echo off pushd“%temp%”makecab/D RptFileName=~.rpt/D InfFileName=~.inf/f nul>nul for/f“tokens=3-7”%%a in('find/I“makecab”^