我试图遍历文本文件中的每一行,并将该行的内容用作变量。
到目前为止,我有:
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上。谢谢。
答案 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 for
或for /?
,查看文档末尾,了解有关修饰符的更多信息。