.bat 批处理 根据条件修改文件名

例如 某个文件夹下有
1.txt 12.txt 13.txt
22.txt 23.txt
34.txt
把1开头的文件改名为 a1.txt a2.txt a3.txt
把2开头的文件改名为 b2.txt b3.txt
把3开头的文件改名为 c4.txt

1、将需要修改的文件名放在同一个文件夹下。

2、右击鼠标 ,选择新建【文本文件】。

3、在文本文件里输入如图的代码,ren  a.doc  b.doc 意思是用b的文件名更换a,如图。

4、选择【文件】-【另存为】,选择保存为所有文件,后缀名为bat文件

5、运行保存的bat文件。

6、就可以看到查看更改后的名字。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-26

以下为运行效果图:




实际执行代码如下:


@echo off & title 批量重命名 By 依梦琴瑶
cd /d %~dp0
setlocal enabledelayedexpansion

set Str=_abcdefghi

for %%a in (*.txt) do (
    set "fn=%%~nxa"
    for /l %%b in (1,1,9) do (
        if "%%~b" equ "!fn:~,1!" ren "%%~a" "!Str:~%%~b,1!!fn:~1!"
    )
)
pause


放在要处理的文件夹内运行。

追问

大神棒棒的 !

不过我的意思不是固定的要把数字替换为顺序的字母,只是举个例子。  

是想如果他包含某些字段,就根据字段的不同来修改文件名。

条件是包含某些字符 具体替换规则每个不一样 

例如

张三做饭.txt  李四吃饭. txt 

变成 张三做饭ghdf.txt  李四吃饭了.txt

王五洗碗打破碗.txt

追答

效果图

@echo off & title 根据规则批量替换字符串 By 依梦琴瑶
cd /d %~dp0 & color 0a
setlocal enabledelayedexpansion

::设置要处理的文件类型,多个类型用英文逗号分隔,如果要处理所有文件,请只保留一个星号*
set Ext=*.txt,*.jpg

::设置处理是否包含子目录,1 代表是,其它字符代表否
set Sub=0

del /f /q "%tmp%\Replace*.?at"
for /f "tokens=1 delims=:" %%a in ('findstr /n ^::ReplaceRules::$ "%~0"') do more +%%~a "%~0">"%tmp%\ReplaceRules.dat"

if "%Sub%"=="1" (set S=/a-d/s/b) else (set S=/a-d/b)
for /f "delims=" %%a in ('dir %S% %Ext%') do (
if not "%%~fa"=="%~f0" (
set "Str=%%~na"
for /f "tokens=1,2* delims=|" %%i in ('type "%tmp%\ReplaceRules.dat"') do (
if not "%%~na"=="!Str:%%~i=%%~j!" (
echo "%%~nxa" --^>^> "!Str:%%~i=%%~j!%%~xa"
(echo ren "%%~fa" "!Str:%%~i=%%~j!%%~xa")>>"%tmp%\ReplaceFiles.bat"
)
)
)
)
call "%tmp%\ReplaceFiles.bat"
echo, & echo 批量替换字符串完成,请按任意键退出
pause >nul & exit

::在下方写上要替换的规则,一行一条,
::替换前和替换后用英文竖杆 | 分隔。
::ReplaceRules::

吃饭|吃饭了
自己|爱自己
么么哒|萌萌哒
苦恼|幸福

本回答被提问者和网友采纳
第2个回答  2019-04-27
首先我们新建一个txt文本文档,右键空白地方(这里是桌面也可以是任何文件夹内)——新建——文本文档

双击打开刚才建立的文本文档,将以下代码复制到文本内
@echo off
for /f "delims=" %%a in ('dir /b/a-d/oN *.*') do echo %%a >>当前文件夹内文件名.txt

修改我们想要得到的文本文档名——将代码内“当前文件夹内文件名”改成自己想要的,比如我们要得到文档名为MP3目录,则用“MP3目录”代替“当前文件夹内文件名”,之后点击保存

关闭文档,修改我们我们新建的文档的名称(不修改也可以,修改方便自己寻早和记忆),这里修改成“利用bat批处理来批量提取文件名”

将文档的拓展名.txt修改成.bat(不知道方法的可以百度修改文件拓展名),修改的时候会提示“如果改变文件扩展名,可能会导致文件不可用”,点击确认即可,这时候我们就得到我们想要的bat批处理命令了

将批处理文件复制或者剪切到要提取文件名的文件夹内(如小编的“【心理FM】【0900期-0999期】”文件夹内),双击或者右键打开bat批处理文件

这时候文件夹内就会生成一个“MP3目录”的文档(前面取的名字,如果需要改变可以将拓展名改回txt修改后再改成bat即可),双击打开,里面记录的便是我们需要的文件名了
第3个回答  2017-09-26
@echo on

for %%i in (1*.txt) do (rename %%i a%%i)
for %%i in (2*.txt) do (rename %%i b%%i)
for %%i in (3*.txt) do (rename %%i c%%i)

pause

另存为bat后,把它放到要操作的目录下,一定要放在文件所在目录,不然会报错

相似回答