我正在运行此代码
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
答案 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