是否可以检查时间是否在两个范围之间,然后根据该时间执行操作。
例如:我只想在当前时间不是在11:00 PM和6.00 AM之间执行操作。
到目前为止,这是我所能拥有的,但是我无法固定在中间。
set "currentTime=!TIME::=!"
set "currentTime=!currentTime:,=!"
set "_bit_compare=leq"
set "compareTime=2300"
set "compareTime1=600"
(time /t | findstr /l "AM PM" || set "_bit_compare=gtr")>nul
if "!currentTime:~0,4=!" %_bit_compare% "!compareTime!" (
do somethinf
)
答案 0 :(得分:2)
使用wsh中的vbscript,(batch-file)来证明我的意见是正确的:
<!-- :
@"%__AppDir__%cscript.exe" //NoLogo "%~f0?.wsf"
@If ErrorLevel 1 Exit /B
@Rem Your Commands go below here
@Echo Within range
@Pause
@Rem Your commands end above here
@Exit /B
-->
<Job><Script Language="VBScript">
If Hour(Now())<=22 AND Hour(Now())>=6 Then
WScript.Quit(0 Mod 255)
Else
WScript.Quit(1 Mod 255)
End If
</Script></Job>
我已经使用Rem
方舟向您展示您放置命令的位置,并提供了两行用于演示的目的,(一旦测试,您可以随意删除)。
答案 1 :(得分:1)
在批处理文件中执行此操作要多花几行,但是您实际上希望以标准格式获取时间。您可以通过致电WMIC来实现。我只是用一个小时来比较。根据提供的示例,我认为不需要在11:00 PM和6.00 AM之间使用分钟。在小时中前导零的情况下,我使用1来作为比较的前缀。
@echo off
set "compareTime1=23"
set "compareTime2=06"
REM GET DATE and TIME
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
SET "YYYY=%dt:~0,4%"
SET "YY=%dt:~2,2%"
SET "MM=%dt:~4,2%"
SET "DD=%dt:~6,2%"
SET "HH=%dt:~8,2%"
SET "min=%dt:~10,2%"
SET "sec=%dt:~12,2%"
IF 1%HH% LSS 1%compareTime1% IF 1%HH% GTR 1%compareTime2% (
ECHO LETS DO SOMETHING
)
答案 2 :(得分:0)
使用PowerShell相对容易编写。如果您在受支持的Windows系统上,则可以使用PowerShell。这也克服了cmd.exe区域变异的众多问题。
$h = [int](Get-Date -Format "HH")
if ($h -le 8 -or $h -ge 23) { & notepad.exe }"
要在.bat文件脚本中使用它,您可以:
powershell -NoLogo -NoProfile -Command ^
"$h = [int](Get-Date -Format "HH");" ^
"if ($h -le 8 -or $h -ge 23) { & notepad.exe }"