我正在尝试从批处理文件中的for /f循环中获取一个简单的值。

使用命令wmic path win32_localtime get dayofweek给我输出:

C:\sendemail>wmic path win32_localtime get dayofweek
DayOfWeek
1


C:\sendemail>

因此,使用以下批处理脚本,我应该能够返回结果“1”:
set cmd=wmic path win32_localtime get dayofweek
for /f "tokens=1 skip=1" %%Z in ('%cmd%') do set _myday=%%Z
echo Var is %_myday%

但是我没有,它至少将变量设置两次,如下所示:
C:\sendemail>set cmd=wmic path win32_localtime get dayofweek

C:\sendemail>for /F "tokens=1 skip=1" %Z in ('wmic path win32_localtime get dayofweek') do set _myday=%Z

C:\sendemail>set _myday=1

 :\sendemail>set _myday=

C:\sendemail>echo Var is
Var is

C:\sendemail>

起初,我想知道为什么,然后我意识到循环正在处理两条空行……不应该这样。根据这个:http://ss64.com/nt/for_cmd.html



要么,它不能正常工作,要么这些行不是空白的,并且充满了某些东西...

无论如何,如何从中得出星期几的结果,而忽略其余部分?

最佳答案

稍作修改即可:

@ECHO OFF
set cmd=wmic path win32_localtime get dayofweek
for /f "tokens=1 skip=1" %%Z in ('%cmd%') do (
    set _myday=%%Z
    GOTO BREAK
)
:BREAK
echo Var is %_myday%
PAUSE
读取所需的行后,只需跳出循环即可。

10-06 02:40