你好,我有一个批处理文件,如下所示:
if %day%==monday, tuesday, wednesday, thursday, friday (
goto yes
) else (
goto no
)
Run Code Online (Sandbox Code Playgroud)
现在我知道第一行不起作用.
我真正想要发生的事情:
它会自动检查它是哪一天.如果是周一到周五,则必须转到"是",否则(周六/周日)转到"否".
这该怎么做?
这是一个示例bat文件,它将执行此类事情我相信您可以考虑使用此示例代码的其他方法.例如,任何时候你需要一个"in"列表.棘手的一点是%date:~0.3%这表示扩展%date%环境变量并从位置0开始,字符串的开头返回接下来的3个字符.你可以从"set /?"中了解更多相关信息.命令.
示例:IsWeekDay.bat
@echo off
setlocal
for %%i in (Mon,Tue,Wed,Thu,Fri) do (
if "%date:~0,3%"=="%%i" goto YES
)
:NO
echo No
goto EOF
:YES
echo Yes
:EOF
endlocal
Run Code Online (Sandbox Code Playgroud)
我在网上跑过这个.测试,它的工作原理.以整数形式返回日期,您仍然可以使用它.
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @(
Set Month=%%A
Set Day=%%B
Set Year=%%C
)
@echo DAY = %Day%
@echo Month = %Month%
@echo Year = %Year%
Run Code Online (Sandbox Code Playgroud)
正如Jay所提到的,using date /t
仅适用于此命令输出星期几和日期的语言环境,并且不适用于其他语言环境(例如俄语).如果您不介意将批处理文件与某些VBScript混合,这里的解决方案应适用于所有语言环境.
诀窍是这个微小的VBScript脚本输出星期几作为数字(1 =星期日,2 =星期一,... 7 =星期六):
WScript.Echo DatePart("w", Date)
Run Code Online (Sandbox Code Playgroud)
您可以从批处理文件运行此脚本,读取其输出并应用您的逻辑:
for /f %%d in ('cscript dayofweek.vbs //nologo') do (
if %%d==7 goto no :: Saturday
if %%d==1 goto no :: Sunday
)
goto yes
Run Code Online (Sandbox Code Playgroud)