用于文本操作的循环不起作用-CMD

用于文本操作的循环不起作用-CMD

我有一个文件 abc1.txt,其内容如下:

a1
b2
c3

我的.CMD 文件包含:

@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%g in (abc1.txt) do (
   set gurl=%%g
   set gfname=%gurl:~-1%
   echo %gfname%
   echo %gurl%
   echo %%g 
)
echo on

我运行 CMD 文件的输出是:

ECHO is off.
ECHO is off.
a1
ECHO is off.
ECHO is off.
b2
ECHO is off.
ECHO is off.
c3

我只是不明白为什么变量 gurl 和 gfname 没有被打印出来!请帮忙。:(

答案1

我不明白为什么变量gurlgfname没有被打印出来

你有enabledelayedexpansion,但你没有使用延缓扩张。

要使用延迟扩展,您需要%variable%!variable!如下方式替换。

更正的批处理文件(test.cmd):

@echo off 
setlocal enabledelayedexpansion
@ECHO off
for /f "tokens=*" %%g in (abc1.txt) do (
   set gurl=%%g
   set gfname=!gurl:~-1!
   echo !gfname!
   echo !gurl!
   echo %%g 
)
endlocal  

示例输出:

> test
1
a1
a1
2
b2
b2
3
c3
c3

进一步阅读

相关内容