Windows FOR DO语句中的局部变量
变量“var”是否在显示其值之前被销毁Windows FOR DO语句中的局部变量,windows,batch-file,Windows,Batch File,变量“var”是否在显示其值之前被销毁 @echo off FOR /f "tokens=* delims=" %%G IN ('dir') DO ( set var=%%G echo %var% ) 由于解析循环体时解析了对%var%的引用,因此这永远不会起作用。您必须启用延迟变量扩展并使用!瓦尔改为: @ECHO OFF SETLOCAL EnableDelayedExpansion FOR /F "tokens=* delims= " %%G IN ('dir') DO ( SE
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo %var%
)
由于解析循环体时解析了对
%var%
的引用,因此这永远不会起作用。您必须启用延迟变量扩展并使用!瓦尔代码>改为:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR /F "tokens=* delims= " %%G IN ('dir') DO (
SET VAR=%%G
ECHO !VAR!
)
ENDLOCAL
您可以通过在命令行中键入SET/?
来阅读有关它的所有信息;-) 这将永远不起作用,因为在解析循环体时解析了对%var%
的引用。您必须启用延迟变量扩展并使用!瓦尔代码>改为:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR /F "tokens=* delims= " %%G IN ('dir') DO (
SET VAR=%%G
ECHO !VAR!
)
ENDLOCAL
您可以通过在命令行中键入SET/?
来阅读有关它的所有信息;-) 您需要延迟扩展:
@setlocal enableextensions enabledelayedexpansion
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo !var!
)
endlocal
它似乎不起作用的原因是在解析整个命令时计算了%var%
。该命令是
for语句的整个四行。通过使用延迟扩展,可以推迟对的计算!瓦尔代码>到执行实际的回显时,如果设置正确。您需要延迟扩展:
@setlocal enableextensions enabledelayedexpansion
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo !var!
)
endlocal
它似乎不起作用的原因是在解析整个命令时计算了%var%
。该命令是
for语句的整个四行。通过使用延迟扩展,可以推迟对的计算!瓦尔代码>到当实际的回波
被正确设置时执行