使用变量批处理循环文本文件中的每一行

时间:2014-02-07 17:25:00

标签: batch-file

我试图遍历文本文件中的每一行,并将该行的内容用作变量。

到目前为止,我有:

for /F "tokens=*" %%A in (mdbs.txt) do (
set var1=%%A
echo "%var1%" > echo1.txt
echo %var1% > echo2.txt
echo set v > set.txt
echo %%A > echo3.txt
)

目前mdbs.txt的内容是: Grounds_Maintenance.mdb

所以我希望每个echo文件都包含“Grounds_Maintenance.mdb”

但它们包含:

Echo1.txt:“”

Echo2.txt:ECHO已开启。

set.txt:set v

然而,循环遍历文件,它只是没有设置变量。

echo3.txt:Grounds_Maintenance.mdb

我一定很遗憾。我想使用变量,因为我想稍后使用以下命令删除扩展:set var1 =%var1:~0,-4%

我在Windows 7上。谢谢。

2 个答案:

答案 0 :(得分:4)

变量已设置,但您无法通过括号内的百分比扩展来访问它。

存在第二种访问变量的方法,称为延迟扩展

setlocal EnableDelayedExpansion

for /F "tokens=*" %%A in (mdbs.txt) do (
  set "var1=%%A"
  echo "!var1!"
)

答案 1 :(得分:3)

jeb回答了你的直接问题。

但如果你想要做的只是剥离扩展,没有理由分配环境变量。只需使用~n修饰符:

for /f "delims=" %%A in (mdbs.txt) do echo %%~nA

在命令提示符下键入help forfor /?,查看文档末尾,了解有关修饰符的更多信息。