Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在批处理中从FOR循环内部为全局变量赋值_Batch File_For Loop_Global Variables - Fatal编程技术网

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谢谢