只做日...批处理文件

Den*_*man 8 goto batch-file

你好,我有一个批处理文件,如下所示:

if %day%==monday, tuesday, wednesday, thursday, friday (
goto yes
) else (
goto no
)
Run Code Online (Sandbox Code Playgroud)

现在我知道第一行不起作用.

我真正想要发生的事情:

它会自动检查它是哪一天.如果是周一到周五,则必须转到"是",否则(周六/周日)转到"否".

这该怎么做?

Jer*_*y E 9

这是一个示例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)


Mic*_*tta 5

我在网上跑过这个.测试,它的工作原理.以整数形式返回日期,您仍然可以使用它.

@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)

  • 这不是一个可靠的解决方案,因为当我在这里使用'date/t'时,我得到的只是短的(YYYY-MM-DD),因此没有日期名称.与区域设置一起使用.如果这是出口(任何人都不是你),我不会打算按照预期工作. (2认同)

Hel*_*len 5

正如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)