【问题标题】:Not able to set a variable value inside for loop in batch file even after setting EnableDelayedExpansion [duplicate]即使在设置 EnableDelayedExpansion [重复] 之后,也无法在批处理文件中的 for 循环内设置变量值
【发布时间】:2015-02-02 04:39:36
【问题描述】:

我想要做的是,我有一个文本文件 (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

有人可以帮我解决吗?

【问题讨论】:

标签: batch-file


【解决方案1】:
set _var = %%a

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

使用set "var=value"

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

【讨论】:

    【解决方案2】:

    虽然 cmets 是正确的,但作者尚未结束问题,因此可能需要更多细节。 在处理文件中的空白行的批处理脚本中还有另一个错误(这会导致 echo 给出错误的输出)。批处理文件的固定版本是:

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

    【讨论】:

      猜你喜欢
      • 2016-04-14
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2021-06-09
      • 2023-03-06
      相关资源
      最近更新 更多