批处理文件循环内SET命令赋值变量不生效问题如何解决
批处理变量赋值问题解决
问题原因
批处理的SET赋值语法要求等号两侧不能有多余空格,你代码中写的SET file_extension = %%~xa存在两个问题:
- 等号左侧的空格会被计入变量名,实际生成的变量名为
file_extension(末尾带空格) - 等号右侧的空格会被计入变量值,实际赋值的内容会额外带一个前导空格
你调用的!file_extension!是不带末尾空格的变量名,该变量从未被赋值,无参数的echo命令就会返回ECHO is off.。
修正方案
去掉SET命令中等号两边的空格即可,修正后完整代码如下:
@echo off setlocal EnableDelayedExpansion for %%a in (folder\*) do ( echo Processing file = %%~nxa echo Processing file extension %%~xa echo Processing file name = %%~na SET file_extension=%%~xa echo !file_extension! echo %%~xa ) pause
如果需要验证问题根源,可以在原代码中尝试输出!file_extension !(变量名末尾加空格),即可看到带前导空格的扩展名输出。
内容的提问来源于stack exchange,提问作者Ankit Pandey
相关产品推荐
相关产品推荐

