爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5234|回复: 2

[参考资料] 批处理批量重命名文件名

[复制链接]
发表于 2014-3-6 19:05:45 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
转自:http://uffjb.blog.163.com/blog/static/3006380120115281957924/

用批处理批量重命名图片文件
一、把以下代码复制到记事本中(黑色代码部分)
二、把记事本文件后缀名.txt改成.bat
三、把这个文件放到你要批量改名的图片文件夹中 @echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set num=100          ::设置文件最大个数,可自己加大
for %%a in (*) do (
::(*) 设置扩展名,*表示所有文件,可以根据需要自己修改,如*.jpg
    set /a num+=1
    if "%%~xa"=="" (
        ren "%%a" "!num:~-2!.jpg">nul
        ) else (
        ren "%%a" "!num:~-2!%%~xa">nul
    )
)
pause
把图片按01,02序号排列改名
如果你要处理子文件夹,for后面加上/r参数..
如果你里面的图片不止100张.把num初始值改为1000,!num:~-2!改

为!num:~-3!,依此类推...

批量(随机)按顺序给文件重命名批处理
@echo off
:ks
cls
color 1f
title 批量(随机)按顺序重命名 整理者QQ:470597776
setlocal enabledelayedexpansion
set "n=1000"
echo ==============================================================================
echo       功能:本操作将对当前目录下的指定类型文件,批量(随机)按顺序重命名!
echo ==============================================================================
echo   使用方法:请在下面输入文件的扩展名,如:mp3 flv txt 等,根据情况可自定义!
echo ==============================================================================
set /p lx=请输入文件类型
if exist *.%lx% (goto zhhb) else echo.
echo ==============================================================================
echo 提示:当前目录下,没有找到你输入的文件类型:%lx% 操作无法继续,回车重新输入!
echo ==============================================================================
pause>nul
goto ks
:zhhb
for /f "delims=" %%a in ('dir/a/b *.%lx%') do call :a "%%a"
for /f "delims=" %%a in ('dir/a/b/on *.%lx%') do set/a "n+=1"&ren "%%a" "!n:~-3!%%~xa"
cls
echo ==============================================================================
echo            恭喜!您指定的操作,已经成功完成。按任意键退出...
echo ==============================================================================
pause>nul & exit
:a
ren "%~1" "%random%%~x1" || goto a
=====(注意我是分隔符,不要复制我!)下面是 按修改时间 重命名批理=========
@echo off
:ks
cls
color 1f
title 按修改时间重命名并排序 整理者QQ:470597776
setlocal enabledelayedexpansion
set "n=1000"
echo ==============================================================================
echo       功能:本操作将对当前目录下的指定类型文件,按修改时间重命名并排序!
echo ==============================================================================
echo   使用方法:请在下面输入文件的扩展名,如:mp3 flv txt 等,根据情况可自定义!
echo ==============================================================================
set /p lx=请输入文件类型
cls
if exist *.%lx% (goto zhhb) else echo.
echo ==============================================================================
echo 提示:当前目录下,没有找到你输入的文件类型:%lx% 操作无法继续,回车重新输入!
echo ==============================================================================
pause>nul
goto ks
:zhhb
for /f "delims=" %%a in ('dir /b /od *.%lx%') do (
set/a n+=1&call ren "%%a" %%n:~-3%%.%lx% )
cls
echo ==============================================================================
echo            恭喜!您指定的操作,已经成功完成。按任意键退出...
echo ==============================================================================
pause>nul & exit
1、批量修改扩展名
如把当前文件夹的*.jpg全部改为*.rar。
@ECHO OFF
set listFile=list.tmp
del "%listFile%" /q 1>nul 2>nul
dir *.jpg /a /b>>"%listFile%"
FOR /F "tokens=*" %%a IN (
'more "%listFile%"'
) DO (
ren "%%a" "%%~na.rar"
)
del "%listFile%" /q 1>nul 2>nul
PAUSE
2、前面插入(例如要给所有歌曲名前面添加歌手的姓名)
@ECHO OFF
set listFile=list.tmp
del "%listFile%" /q 1>nul 2>nul
dir *.mp3 /a /b>>"%listFile%"
FOR /F "tokens=*" %%a IN (
'more "%listFile%"'
) DO (
ren "%%a" "歌手名%%a"
)
del "%listFile%" /q 1>nul 2>nul
PAUSE
3、后面添加(例如要给所有文件名后面添加一个网站的网址)
@ECHO OFF
set listFile=list.tmp
del "%listFile%" /q 1>nul 2>nul
dir *.mp3 /a /b>>"%listFile%"
FOR /F "tokens=*" %%a IN (
'more "%listFile%"'
) DO (
ren "%%a" "%%~naWWW WWW Com%%~xa"
)
del "%listFile%" /q 1>nul 2>nul
PAUSE
4、删除文件名中的相同部分(例如删除所有文件名中的歌手名)
@ECHO OFF
set deleteString=歌手名
set listFile=list.tmp
del "%listFile%" /q 1>nul 2>nul
dir *.mp3 /a /b>>"%listFile%"
FOR /F "tokens=*" %%a IN (
'more "%listFile%"'
) DO (
SETLOCAL ENABLEDELAYEDEXPANSION
set newFileName=%%a
set newFileName=!newFileName:%deleteString%=!
ren "%%a" "!newFileName!"
ENDLOCAL
)
del "%listFile%" /q 1>nul 2>nul
PAUSE
5、把文件名批量重命名为上级目录名文件名的形式,例如d:\testPath\fatherPath\test.txt
就要重命名为fatherPathtest.txt,按照它的要求,我们可以分析一下,重命名的命令就是
ren 然后参数为ren 源文件名 新文件名,即上面的单个进行重命名的话,那就是
ren "d:\testPath\fatherPath\test.txt" "fatherPathtest.txt"
既然知道了单个怎么命名,那批量也应该能知道了吧。
我们知道在批处理中要批量处理的话,那肯定是少不了用for命令的。
现在我们把他的要求分解成两部分
1、先用dir命令把所有要进行重命名的文件的全路径列出来发送到一个临时的文本文件。
   (供下面的for语句来读取)
2、用for命令来读取那个由dir命令生成的列表文件
   a、在循环的过程中取得上级文件夹名
   b、取得文件名
   c、ren "源文件名" "上级文件夹名文件名"
上面就是伪代码,接下来是批处理的实现代码

@echo off
rem 生成临时列表文件
dir d:\*.txt /s /a-d /b>>tmp.txt
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'more tmp.txt'
) DO (
rem 用Setlocal来启用环境变量延迟功能
Setlocal EnableDelayedExpansion
rem 取得路径包括了最后一个斜线\
set tempPath=%%~dpa
rem 把路径中的最后一个斜线去掉
set tempPath=!tempPath:~,-1!

rem 在for命令中来扩展取得路径名
FOR %%A IN (
   "!tempPath!"
) DO (
   rem 扩展取得上级目录名
   set filePath=%%~nA
  
   rem 新的文件名为: 上级目录名文件名
   set new_name=!filePath!%%~nxa

   ren "%%a" "!new_name!"
)
ENDLOCAL
)
rem 删除临时文件
del tmp.txt /q 1>nul 2>nul
pause
6、批量重命名,删除文件名中相同的网站名。
昨天晚上在网上下载了一个压缩包,里面是邓丽君的歌曲,有50多首。那些歌曲的文件名的后面都加了那个网站的网址,看起来很不爽,大致为
歌曲www.xxx.com.mp3
所以我要把后面的www.xxx.com去掉
如果一个一个去的话,那必然很麻烦,所以就用批处理了,以下的批处理就是用来实现这个功能的。
因为我这里www.xxx.com.mp3即最后的字符个数为14个,所以我只要取前面的文件名,不取这最后的14个,然后再后面加上.mp3就可以了。
%fileName:~0,-14%
这样的形式就可以取到了。
上面是说原理,下面就是我的批处理,批处理代码不是很多,我就不做详细说明了,有兴趣的朋友自己可以看看,也可以根据这个修改成自己需要的批处理。
@ECHO OFF
COLOR 0a
rem 调用初始化部分代码
CALL :initEnv
rem 删除临时文件
CALL :delTmpFiles
rem 生成列表保存在临时文件中(重命令时根据这个列表来进行命名)
CALL :madeList>>%tmpFile%
rem 调用主模块(读取列表,进行重命名)
CALL :main
rem 删除临时文件
CALL :delTmpFiles
PAUSE
EXIT

rem 初始化
:initEnv
set tmpFile=tmp.txt
GOTO :EOF
rem 删除临时文件
:delTmpFiles
del %tmpFile% /q 1>nul 2>nul
GOTO :EOF
rem 生成列表文件
:madeList
dir *.mp3 /a /b
goto :EOF
rem 主模块(重命名)
:main
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=*" %%a IN (
'more %tmpFile%'
) DO (
set strTemp=%%a

ren "%%a" "!strTemp:~0,-14!.mp3"
)
GOTO :EOF

密码修改失败请联系微信:mofangbao
发表于 2015-4-24 17:08:32 | 显示全部楼层
{:eb513:}{:eb513:},哈哈,以前好多手动。你这写了这么多。
密码修改失败请联系微信:mofangbao
发表于 2017-10-6 11:48:39 | 显示全部楼层
看不懂啊。。{:5_235:}{:5_235:}{:5_235:}
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表