我正在编写一个批处理文件,我想运行一个for循环,将它的第一个值设置为变量。我只需要命令的第一个值,但我找不到另一种方法来做到这一点。我设置的方式是使用for循环然后是do语句,表示如果未设置变量,则设置变量。问题是当它运行时,循环每次都使用unset变量,而不是在第一个循环之后将其视为设置。
例如,我的if if "%foo%"=="" set foo=%%i
,输出看起来像这样
if "" == "" set foo="hello"
下一个循环仍会显示if "" == "" set foo="bar"
有没有办法解决这个问题?我尝试设置延迟扩展,但没有帮助。我也对其他只能从命令中获得第一个值的方式持开放态度。
答案 0 :(得分:3)
set "foo="
for /f %%i in (....) do if not defined foo set "foo=%%i"
或者,如果您可以添加标签
for /f %%i in (....) do set "foo=%%i" & goto :done
:done