Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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
Windows FOR DO语句中的局部变量_Windows_Batch File - Fatal编程技术网

Windows FOR DO语句中的局部变量

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

变量“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 (
    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语句的整个四行。通过使用延迟扩展,可以推迟对
的计算!瓦尔到当实际的
回波
被正确设置时执行