【bat脚本】【问题修复】此时不应有xxx

1. 问题描述

有这么一段代码,遍历当前目录下的所有图片文件并打印。

然后,测试将每个文件路径赋值给新变量输出。

代码如下:

for /r %%i in (*.jpg, *.png) do (
    echo %%i
    set str=%%i
    echo %str%
)

但是,却未能正常输出,输出结果如下:

此时不应有 .jpg。

分析问题,是.jpg文件含有圆括号,那么需要双引号将变量括起来。

2. 解决问题

修改代码如下:

for /r %%i in (*.jpg, *.png) do (
    echo %%i
    set str=%%i
    echo "%str%"
)

输出结果如下:

D:\CodeTest\BatTest\imagebed\blog\PicGo安装Gitee插件.png
"D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg"
D:\CodeTest\BatTest\imagebed\blog\spring-overview.png
"D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg"
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (3).jpg
"D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg"
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg
"D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg"

结果是出来了,但是多了双引号,而且每次循环结果都一样。

再次修改代码如下:

setlocal enabledelayedexpansion

for /r %%i in (*.jpg, *.png) do (
    echo %%i
    set str=%%i
    echo !str!
)

这样,输出结果就正常了。

D:\CodeTest\BatTest\imagebed\blog\PicGo安装Gitee插件.png
D:\CodeTest\BatTest\imagebed\blog\PicGo安装Gitee插件.png
D:\CodeTest\BatTest\imagebed\blog\spring-overview.png
D:\CodeTest\BatTest\imagebed\blog\spring-overview.png
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (3).jpg
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (3).jpg
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg

文章作者: 叶遮沉阳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 叶遮沉阳 !
  目录