我正在尝试从批处理文件中的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
读取所需的行后,只需跳出循环即可。