在bat文件中读取for循环中的变量

时间:2015-04-20 12:36:24

标签: windows batch-file

我正在尝试从下面的文件中打印行for循环:

SET my-file="C:\tmp\xxx.txt"
@echo off
for /f "tokens=*" %%a in (%my-file%) do (
  echo line=%%a
)

其中: C:\ tmp \ xxx.txt包含:

a
b
c
d

但%my-file%未展开。如何在for循环中使用变量?

2 个答案:

答案 0 :(得分:1)

通过在路径周围加上引号,变量被视为字符串,而不是路径。因此%my-file%将包含文件的名称,而不是内容。

您可以使用不带引号的相同代码(如果路径允许),或使用type来读取文件内容:

SET my-file="C:\tmp\xxx.txt"
@echo off
for /f "tokens=*" %%a in ('type %my-file%') do (
  echo line=%%a
)

答案 1 :(得分:0)

您的代码有效。如果你有问题,请删除回声 - 这表明它正在工作。

这是你的计划本身。

for /f "tokens=*" %%a in ("C:\tmp\xxx.txt") do echo line=%%a

它应该打印,因为有人把它放在引号中, C:\ tmp \ xxx.txt 作为引号意味着字符串是内容。没有单引号或双引号是文件名。单引号是一个命令。

如果您需要引号,可以使用UseBackQ选项来移动单/双/无引号含义。

请参阅For /?

你的大部分批次都是伏都教。

额外不需要的括号并将文字粘贴到变量中。