批处理文件变量显示

时间:2014-07-08 06:54:58

标签: batch-file

我正在运行此代码

SETLOCAL EnableDelayedExpansion
SET count=1
FOR /F "tokens=* delims= usebackq" %%x IN ("%myfilepath.txt%") DO (
SET POS=%%x
echo %POS%
)
ENDLOCAL

但输出是

SET POS = viawizard
echo is on

1 个答案:

答案 0 :(得分:0)

您会看到为变量分配的值,但您无法访问此值

当解析一段代码(用括号括起来的代码)时,所有变量读取都被变量中的值替换开始执行代码,因此,在执行时,因为有没有读取变量,如果变量中的值在块内更改,则无法访问更改的值。

启用延迟扩展,您可以更改其工作方式。如果某个变量的值在块内发生变化,并且您需要从同一个块内部访问更改的值,则可以/必须将此变量的语法从%var%更改为!var!(任何变量在同一情况下),向解析器指示变量中的读操作将被延迟,直到执行命令为止。

@echo off

    SETLOCAL EnableDelayedExpansion
    SET count=1
    FOR /F "usebackq delims=" %%x IN ("%myfilepath.txt%") DO (
        SET "POS=%%x"
        echo !POS!
    )
    ENDLOCAL