raz*_*23x 2 batch-file dayofweek
好吧,我正在尝试让脚本打印出星期几,并且在测试之后我想让脚本在正确运行后更高级
@echo off
SETLOCAL enabledelayedexpansion
SET /a count=0
FOR /F "skip=1" %%D IN ('wmic path win32_localtime get dayofweek') DO (
if "!count!" GTR "0" GOTO next
set dow=%%D
IF %dow%==1 set dowday=Monday
IF %dow%==2 set dowday=Tuesday
IF %dow%==3 set dowday=Wednesday
IF %dow%==4 set dowday=Thursday
IF %dow%==5 set dowday=Friday
IF %dow%==6 set dowday=Saturday
IF %dow%==7 set dowday=Sunday
SET /a count+=1
)
:next
echo %dowday%
pause
Run Code Online (Sandbox Code Playgroud)
dbe*_*ham 10
您启用延迟扩展,但随后无法使用它.您需要延迟扩展,因为您在循环中设置变量,然后尝试在同一循环中引用变量的值.解析语句(或块)时(在迭代循环之前)发生正常扩展.延迟扩展为您提供迭代期间执行语句时的值.
@echo off
SETLOCAL enabledelayedexpansion
SET /a count=0
FOR /F "skip=1" %%D IN ('wmic path win32_localtime get dayofweek') DO (
if "!count!" GTR "0" GOTO next
set dow=%%D
IF !dow!==0 set dowday=Sunday
IF !dow!==1 set dowday=Monday
IF !dow!==2 set dowday=Tuesday
IF !dow!==3 set dowday=Wednesday
IF !dow!==4 set dowday=Thursday
IF !dow!==5 set dowday=Friday
IF !dow!==6 set dowday=Saturday
SET /a count+=1
)
:next
echo %dowday%
pause
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以通过在IF语句中使用%% D来避免延迟扩展,并且无条件地GOTO:接下来在循环结束时,因为count总是大于0.
@echo off
SETLOCAL
SET /a count=0
FOR /F "skip=1" %%D IN ('wmic path win32_localtime get dayofweek') DO (
set dow=%%D
IF %%D==0 set dowday=Sunday
IF %%D==1 set dowday=Monday
IF %%D==2 set dowday=Tuesday
IF %%D==3 set dowday=Wednesday
IF %%D==4 set dowday=Thursday
IF %%D==5 set dowday=Friday
IF %%D==6 set dowday=Saturday
SET /a count+=1
goto next
)
:next
echo %dowday%
pause
Run Code Online (Sandbox Code Playgroud)