Batch file 即使在设置EnableDelayedExpansion之后,也无法在批处理文件中的循环内设置变量值

Batch file 即使在设置EnableDelayedExpansion之后,也无法在批处理文件中的循环内设置变量值,batch-file,Batch File,我想做的是,我有一个文本文件(List.txt),通过批处理脚本,我想读取(逐行)文本文件,并将该行保存在某个变量中供以后使用。下面是我正在尝试的批处理脚本,但不知道为什么它不工作 @echo off set _filePath= List.txt @echo off setlocal enabledelayedexpansion for /f "tokens=*" %%a in (%_filePath%) do ( set _var = %%a echo !_var! ) List.tx

我想做的是,我有一个文本文件(List.txt),通过批处理脚本,我想读取(逐行)文本文件,并将该行保存在某个变量中供以后使用。下面是我正在尝试的批处理脚本,但不知道为什么它不工作

@echo off
set _filePath= List.txt

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (%_filePath%) do  (
set _var = %%a
echo !_var!
)
List.txt文件具有:

abc|def
1234|defg
abcde|98745
输出为:-

ECHO is off
ECHO is off
ECHO is off
我想要的是:

abc|def
1234|defg
abcde|98745

有人能帮我解决这个问题吗?

虽然评论是正确的,但作者还没有结束这个问题,所以可能需要更多的细节。 批处理脚本中还有另一个错误,用于处理文件中的空行(这会导致echo给出错误的输出)。批处理文件的固定版本为:

@echo off
set _filePath=List.txt
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (%_filePath%) do  (
    set _var=%%a
    echo;!_var!
)
简单问题-
set
=
两侧的空格敏感

使用
设置“var=value”


这将从指定的值中排除尾随空格。

重复使用
set _var=%%a
在等号周围没有空格,批处理代码将正常工作。
set _filePath=List.txt
也不正确,因为列表文件很可能不是以文件名中的空格字符开头的。但是这个错误是自动纠正的。
set _var = %%a