我有一个文件 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
我不明白为什么变量gurl
和gfname
没有被打印出来
你有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
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 启用延迟扩展- 延迟扩展将导致变量在执行时而不是在解析时扩展。