基本上我正在尝试创建的是一个脚本,只有在时间为LEQ而不是19:00(晚上7点)时才会运行,到目前为止我所做的是:
set myTime=%time%
set myFlag=false
if %myTime% LEQ 19:00 set myFlag=true
if myFlag=true (
*my script*
)
它返回此错误消息:“此时不期待86”,(86是变量'myTime'[14:36:11,86]的最后一个数字。它只是不起作用。
我也试过了:
set myTime=%time%
set myFlag=false
if %myTime% LEQ 19:00:00,00 set myFlag=true
if myFlag=true (
*my script*
)
两种方式我都得到相同的错误消息两位数不期望。有关如何解决这个问题的任何想法?甚至可以对Windows批处理文件进行时间比较吗?
答案 0 :(得分:1)
Syntax: Escape Characters, Delimiters and Quotes
<强>符强>
分隔符将一个参数与下一个参数分开 - 它们分开了 命令行为单词。
参数通常用空格分隔,但任何一个都是空格 以下也是有效的分隔符:
- 逗号(,)
- 分号(;)
- 等于(=)
- Space()
- Tab()
请注意,虽然
调用)/
和-
通常用于分隔命令 选项,它们不在上面的列表中。这是因为批量 文件参数传递给CMD.exe,CMD.exe可以接受它自己的 参数(使用/
和-
下一个代码段应该有效(请参阅set /?
和if /?
):
set "myTime=%time%"
set "myFlag=false"
if "%myTime%" LEQ "19:00:00,00" set "myFlag=true"
if "%myFlag%"=="true" (
echo *my script*
)
请注意,上面的代码段与语言环境有关。您可以尝试下一个区域设置独立解决方案,类似于this answer to another question:
SETLOCAL EnableExtensions
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "myTime=%%a"
set "myTime=%myTime:~8,6%"
set "myFlag=false"
if "%myTime%" LEQ "190000" set "myFlag=true"
if "%myFlag%"=="true" (
echo *my script*
)
阅读
WMIC.exe
:Windows Management Instrumentation Command localdatetime
:Win32_OperatingSystem class 中的CIM_DATETIME format属性
set "myTime=%myTime:~8,6%"
:Extract part of a variable (substring) 答案 1 :(得分:0)
Set Ag=WScript.Arguments
If CDate(Ag(0)) > CDate(Ag(1)) then
Wscript.echo "Param 1 greater than Param 2"
wscript.quit 0
else
Wscript.echo "Param 1 NOT greater than Param 2"
wscript.quit 1
End If
批量使用(使用任何有效的时间/日期字符串)
scriptname.vbs 7pm 8pm
If errorlevel 0 if not errorlevel 1 echo Param 1 greater than param 2
If errorlevel 1 if not errorlevel 2 echo Param 2 greater than param 1
或者
scriptname.vbs 19:00:00 20:00:00
If errorlevel 0 if not errorlevel 1 echo Param 1 greater than param 2
If errorlevel 1 if not errorlevel 2 echo Param 2 greater than param 1