标题: [文本处理] 求助批处理用A文件夹中的文件名去重命名B文件夹中的文件名 [打印本页]
作者: WBATW 时间: 2024-4-23 00:40 标题: 求助批处理用A文件夹中的文件名去重命名B文件夹中的文件名
用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文件夹的文件名重命名。谢谢 !
作者: 77七 时间: 2024-4-23 11:46
本帖最后由 77七 于 2024-4-23 11:54 编辑
- @echo off
- set fa=a
- set fb=b
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for %%a in ("%fa%\*") do (
- set /a n+=1
- set #!n!=%%~nxa
- )
- for /f "delims=" %%a in ('dir /b /a-d "%fb%\*"') do (
- set /a m+=1
- call ren "%fb%\%%a" "%%#!m!%%"
- )
- endlocal
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |