用A文件夹中的文件名去重命名B文件夹中的文件名,按文件名一对一对应关系重命名
A、B文件夹在当前目录,且其中的文件数目相等(扩展名可能不一样)。示例代码如下:- @echo off
- setlocal enabledelayedexpansion
-
- set "folderA=A"
- set "folderB=B"
-
- for %%a in ("!folderA!\*.*") do (
- set "filename=%%~nxa"
- if exist "!folderB!" (
- for %%b in ("!folderB!\*.*") do (
- set "newname=%%~b" rem 【%%~b】不能写成【%%~nxb】
- ren "!newname!" "!filename!"
- )
- ) else (
- echo 文件不存在: "!folderB!\!newname!*"
- )
- )
-
- endlocal
-
- PAUSE
复制代码 ------------------
运行上述示例代码存在以下问题:
1、A文件夹的文件名有序号(测试时在文件名末尾),B文件夹的没有,可正常重命名;
2、B文件夹的文件名有序号(测试时在文件名末尾),A文件夹的没有,不能正常重命名;
3、B文件夹的文件名有序号(测试时在文件名首),A文件夹的文件名没有序号,可正常重命名;
4、文件名空格、大小写问题;
我希望修改上述示例代码,使其能在通常情况下的文件名(特殊字符除外)能够正常执行操作。即,A文件夹中的文件名一对一B文件夹中的文件名、按对应关系对应B文件夹的文件名重命名。谢谢 ! |