即使在设置EnableDelayedExpansion后,也无法在批处理文件中为for循环设置变量值

时间:2014-12-04 10:30:25

标签: 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.txt文件包含:

abc|def
1234|defg
abcde|98745

,输出为: -

ECHO is off
ECHO is off
ECHO is off

我想要的是:

abc|def
1234|defg
abcde|98745

有人能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

set _var = %%a

简单问题 - set= 两侧的 Spaces 很敏感。

使用set "var=value"

从排除的值中排除尾随空格。

答案 1 :(得分:0)

虽然评论是正确的,但作者尚未解决问题,因此可能需要更多细节。 批处理脚本中还存在另一个错误,用于处理文件中的空行(这会导致回显给出错误的输出)。批处理文件的固定版本为:

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