rename 如何批量替换文件名中的字符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rename 如何批量替换文件名中的字符?相关的知识,希望对你有一定的参考价值。

如题呢.我有90个文字.文字的名字是 (1).jpg 至 (90).jpg
我想把它们修改成 ,1,.jpg 至 ,90,.jpg
但是我用 rename (*).jpg ,*,.jpg
发现没有用..虽然DOS框出现.但是一直在处理命令,却没有效果.

批量修改文件名中的某些相同字符:

第1步,打开优速文件批量重命名,然后将需要修改名称的文件全部导入到软件中,文件格式不受限制哦,任何文件都可批量重命名。


第2步,文件添加成功后软件界面左边会有设置区域,命名方式选择“替换”,在查找内容右边输入需要修改的字符,在替换内容右边输入修改后的字符。软件中可以预览到新的文件名,可以查看是否修改成功。


第3步,设置完成后点击【开始重命名】红色按钮,启动软件。当弹出“重命名成功”的提示框,说明文件名批量修改成功。


第4步,通过案例可以看到,原本文件名中的“文件”文字字符,全部成了“数据”两个字。

参考技术A 用下面的DOS命令就可以:
for /l %i in (1,1,90) do ren "(%i).jpg" ",%i,.jpg"

注意,不是把命令输入在开始、运行里面,而是进入命令提示符后,进入文件相应的文件夹之后再输入上面的命令,如果是在开始、运行里面输入,需要使用完整的文件路径,例如:
for /l %i in (1,1,90) do ren "d:\xxx\(%i).jpg" ",%i,.jpg"

再注意,如果你是把命令写在BAT文件里面,需要把上面命令中的%都写为%%。本回答被提问者采纳
参考技术B 使用EXCEL辅助吧!
1列输入 ren
2列输入你原来的文件名
3列输入新文件名
提示,输入名字后可以下拉形成序列名
将内容复制到TXT文件中 ,类似以下内容
ren "(1).jpg" ",1,.jpg"
ren "(2).jpg" ",2,.jpg"
ren "(3).jpg" ",3,.jpg"
ren "(4).jpg" ",4,.jpg"
ren "(5).jpg" ",5,.jpg"
ren "(6).jpg" ",6,.jpg"
ren "(7).jpg" ",7,.jpg"
ren "(8).jpg" ",8,.jpg"
ren "(9).jpg" ",9,.jpg"
然后保存为 文件.bat
把这个文件放到要改名的文件一起,运行即可。追问

谢谢,但是不太想借助其它工具,
DOS里面本身没有循环语句和字符串变量么?

追答

dos 下也支持 * ? 等通配符 你可以试试,不过因为系统并不知道你要代替哪部分,所以直接用改命令结果会错误。

bat批量重命名(指定替换字符)

123_a.txt 234_a.txt 345_a.txt
如上面,有一系列的文件,要把a全部替换成b
bat文件该怎么写!!!!!!
求助
我要for循环的,不要rename的

1、电脑打开要重命名的文件,然后新建TXT文档。


2、打开新建的TXT文档后,输入字符

set a=1000

setlocal EnableDelayedExpansion

FOR /f "tokens=*" %%i IN ('dir /a:d /b') DO (

set /A a+=1

ren "%%i" "电影!a!"

)

1000和电影是可以更改的。


3、保存TXT后,把后缀改为bat,然后点击是。


4、点击运行bat,就可以把文件名都改好了。

参考技术A @ECHO OFF
set batchName=批量重命名-替换文件或者文件夹的字符串
TITLE 
忆林子--%batchName%
rem 
[HEAD========================================================HEAD]
rem 
名称:批量重命名
rem 作者:忆林子
rem 概要:批量替换文件或者文件夹的字符串
rem 用法:
rem 
1、将需要批量重命名的文件所在的那个文件夹拖到该处理上
rem 2、按提示输入要替换的字符串,然后按回车。
rem 
3、按提示输入想要替换为的字符串,然后按回车。
rem 
rem 考虑到多次操作,该批处理加了循环操作处理,可进行多次替换,而不
rem 
需要多次拖文件夹。
rem 
rem 修正履历
rem 修改者 修正方式 版本号 备考
rem 
[MID==========================================================MID]
rem 忆林子 新建 
Ver.2010.03.06-001
rem 
[FOOT========================================================FOOT]
COLOR 
0a
:main
set /a count=%count%+1
set /p oldStr=[请输入想要替换的字符串]
set /p 
newStr=[请输替换后的字符串]
for /f "tokens=*" %%a in (
'dir "%~1" /a /b'
) do 
(
SETLOCAL ENABLEDELAYEDEXPANSION
set "newFileName=%%~nxa"
set 
"newFileName=!newFileName:%oldStr%=%newStr%!"
ren "%~1\\%%~nxa" 
"!newFileName!"
ENDLOCAL
)
ECHO.
echo 第 %count% 
次替换已完成
ECHO.
goto :main
EXIT

用法参照以下说明

http://hi.baidu.com/kaixiawei/item/655fcd3cc3600ebf124b146f

追问

看着说明,怎么都用不了,newStr=[请输替换后的字符串],输入要替换的字回车后,显示“'newStr' 不是内部或外部命令,也不是可运行的程序”,报错。

追答

只能说百度回答的这个代码格式太垃圾。。。

复制出来的结果都是错的。你打开我发你的那个链接从里面复制代码保存吧。。

给你上传我保存的结果好了。

 

本回答被提问者采纳
参考技术B

神人啊,不用ren你想如何改文件名

ren很简单,为啥不用

ren *_a.txt *_b.txt

追问

抱歉,说的不明白,因为到时候可能还有别的要求
所以bat中只有ren *_a.txt *_b.txt不能解决问题

需要for %%i in(*) do (
set file=%%i
ren %%i %file:a=b%
)
类似于上面的样子,可是才刚开始学习,上面的写法就是无法把a改变成b,具体的怎么写也不清楚,错在哪也不知道。

追答for %%i in (*) do (
set file=%%i
ren %%i %file:a=b%
)

在复合语句中变量file要进行扩展,正确应该为

@echo off&setlocal enabledelayedexpansion
for %%i in (*_a.txt) do (
  set "file=%%i"
  ren "%%i" "!file:_a=_b!"
)

但是这种写法有个致命伤,会把所有_a变为_b。涉及到文件重命名,建议用for /f +dir 来操作。

只是要修改后面一个字符,参考:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b *_a.txt') do (
    set "file=%%~na"
    ren "%%a" "!file:~,-1!b%%~xa"
)

以上是关于rename 如何批量替换文件名中的字符?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 批量修改文件名 rename

bat批量重命名(指定替换字符)

Linux命令:rename/basename/dirname

rename命令

rename命令

Linux批量替换多个文件中字符串