问题概述:
move的目标文件名包含通配符(*)时,匹配的文件不是希望的结果
输入:
同一目录下的漫画图片文件,文件名类似“XXX漫画第XX话”格式
需求:
根据文件名中“第XX话”建立子目录并把对应文件放入其中
期望的结果:
建立“第1话”、“第2话”等文件夹,并把文件名含有“第1话”、“第2话”的文件相应置入
实际的结果:
在“第k话”的文件夹中,除了包含“第k话”的文件,还会包含“第m话”、“第n话”等,m、n与k无明确联系。
复现步骤
复现测试如下:- @echo on & cd/d %~dp0
- setlocal EnableDelayedExpansion
-
- for /l %%n in (352,1,356) do (
- echo .>%%n话_001.png
- echo .>%%n话_002.png
- echo .>%%n话_003.png
- echo .>%%n话_004.png
- echo .>%%n话_005.png
- )
-
- pause
-
- for /l %%i in (352,1,356) do (
- REM for /l %%i in (356,-1,352) do (
- mkdir %%i
- move %%i*.png %%i
- pause
- )
复制代码 以上测试运行后的第一次移动结果为:- (
- mkdir 352
- move 352*.png 352
- pause
- )
- Q:\Down\cmd bug\353话_005.png
- Q:\Down\cmd bug\355话_005.png
- Q:\Down\cmd bug\356话_005.png
- Q:\Down\cmd bug\352话_001.png
- Q:\Down\cmd bug\352话_002.png
- Q:\Down\cmd bug\352话_003.png
- Q:\Down\cmd bug\352话_004.png
- Q:\Down\cmd bug\352话_005.png
- 移动了 8 个文件。
复制代码 move 352*.png 352这行居然把353、355、356话的第5页也移动进去了,这是为什么?
此外,偶然发现,如果将测试中for 从正序改为逆序(将rem掉的一行取消rem,原for行 rem掉),则不会出现此问题,这又是什么情况? |