Batch file 如何在批处理中从FOR循环内部为全局变量赋值
我有一些代码,就是从文件中获取一些字符串并将其分配给某个变量。该变量将用于文件中的不同用途:Batch file 如何在批处理中从FOR循环内部为全局变量赋值,batch-file,for-loop,global-variables,Batch File,For Loop,Global Variables,我有一些代码,就是从文件中获取一些字符串并将其分配给某个变量。该变量将用于文件中的不同用途: setlocal EnableDelayedExpansion FOR /F "tokens=* USEBACKQ" %%F IN (`file.txt`) DO SET var1=%%F endlocal echo %var1% 我得到空的var1。如何提取字符串并将其用于不同的位置?试试这个 @echo off Setlocal EnableDelayedExpansion For /F "tok
setlocal EnableDelayedExpansion
FOR /F "tokens=* USEBACKQ" %%F IN (`file.txt`) DO SET var1=%%F
endlocal
echo %var1%
我得到空的var1
。如何提取字符串并将其用于不同的位置?试试这个
@echo off
Setlocal EnableDelayedExpansion
For /F "tokens=* USEBACKQ" %%F IN ("file.txt") DO Set "var1=!var1!%%F"
Echo !var1!
只是不要按照上面的方法执行
endlocal
,因为一旦脚本存在,它将立即执行endlocal。但是,如果要对循环外字符串中的每一行执行此操作,最好调用一个子例程。为什么要用end local关闭环境?endlocal&设置“var1=%var1%”
<代码>%var1%在“本地”内展开,但集
在“本地”外执行。如果确实需要关闭环境,可以使用以下命令:endlocal&set var1=%var1%,我没有成功Yet在使用USEBACKQ选项时需要在文件名周围加双引号。我需要在FOR循环之外使用var1
,但是var1
什么都不是outside@Sergio但是在for循环之外使用var1
只会打印最后一个var集,这就是您想要的吗?@GerhardBarnard全局目标是从文件中提取一些字符串,并将其用作脚本中不同位置的另一个命令的参数。第一次var1
是empty@Sergio请记住,setlocal和endlocal并不构成循环的一部分,正如您所知。它只设置使用和结束扩展和其他函数的时间。@GerhardBarnard谢谢