【免费】用bat批量修改文件名的参考集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【免费】用bat批量修改文件名的参考集
用bat批量获取和修改文件名的方法
1.批量提取
新建文本文档在文本文档里输入:
dir *.* /a /b /s >A.txt
保存为提取名字.bat
文件名字被提取到当前文件夹的 A.txt里面了!也可以提取某类型的文件比如*.mp3 或者a*.mp3
2.批量重命名
新建文本文档在文本文档里输入:
@for /f %%a in (A.txt) do @(
if exist %%a for /f %%b in (B.txt) do (
rename %%a %%b))
保存为批量改名.bat
A.txt 是原来的文件名
B.txt 是修改后的文件名
一行对应一个名字不能有空格同时注意文件属性
A.txt :
NBA直播录像1.3gp
NBA直播录像2.3gp
NBA直播录像3.3gp
NBA直播录像4.3gp
B.txt :
NBA直播录像第一场.3gp
NBA直播录像第二场.3gp
NBA直播录像第三场.3gp
NBA直播录像第四场.3gp
有兴趣加入技术交流QQ群:58755232
6月9日补充:
参数:
-1 每列仅显示一个文件或目录名称。
-a或--all 下所有文件和目录。
-A或--almost-all 显示所有文件和目录,但不显示现行目录和上层目录。
-b或--escape 显示脱离字符。
-B或--ignore-backups 忽略备份文件和目录。
-c 以更改时间排序,显示文件和目录。
-C 以又上至下,从左到右的直行方式显示文件和目录名称。
-d或--directory 显示目录名称而非其内容。
-D或--dired 用Emacs的模式产生文件和目录列表。
-f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。
-F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。
-g 次参数将忽略不予处理。
-G或--no-group 不显示群组名称。
-h或--human-readable 用"K","M","G"来显示文件和目录的大小。
-H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。
-i或--inode 显示文件和目录的inode编号。
-I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。
-k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。
-l 使用详细格式列表。
-L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。
-m 用","号区隔每个文件和目录的名称。
-n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。
-N或--literal 直接列出文件和目录名称,包括控制字符。
-o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。
-p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。
-q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。
-Q或--quote-name 把文件和目录名称以""号标示起来。
-r或--reverse 反向排序。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-s或--size 显示文件和目录的大小,以区块为单位。
-S 用文件和目录的大小排序。
-t 用文件和目录的更改时间排序。
-T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。
-u 以最后存取时间排序,显示文件和目录。
-U 列出文件和目录名称时不予排序。
-v 文件和目录的名称列表以版本进行排序。
-w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。
-x 以从左到右,由上至下的横列方式显示文件和目录名称。
-X 以文件和目录的最后一个扩展名排序。
--block-size=<区块大小> 指定存放文件的区块大小。
--color=<列表格式> 培植文件和目录的列表格式。
--full-time 列出完整的日期与时间。
--help 在线帮助。
--indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。
--quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。
--show-control-chars 在文件和目录列表时,使用控制字符。
--sort=<排序方式> 配置文件和目录列表的排序方式。
--time=<时间戳记> 用指定的时间戳记取代更改时间。
--version 显示版本信息。
@Echo Off&Setlocal Enabledelayedexpansion
For /f"tokens=*"%%i in('dir /a-d /b /s "%~dp02\*.txt"') do( Set /a n+=1&Set n1=
For /f"usebackq tokens=*"%%j in("%~dp01\a.txt") do(Set /a n 1+=1
If !n!==!n1! (
Copy "%%i""%~dp03\"
Ren "%~dp03\%%~nxi""%%j%%~xi")))
Pause
@echo off
setlocal EnableDelayedExpansion
set a=1
rem 循环当前目录下所有文档的文件名,支持带空格的名称
for /f "delims=" %%i in ('dir /b *.doc') do (
rem 如果没有相同的文件名,则继续
if not "%%~ni"=="%~n0" (
ren "%%i" "!a!.doc"
rem 设置数值型变量a=a+1
set /a a+=1
)
)
echo 批量重命名完成!
pause&exit
在DOC文档目录执行批处理即可
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /a-d/b *.avi') do (
set n=%%i
move "%%i" "!n:~30!")
pause
将下面这两句复制到记事本,改后缀为.bat,放到那音频文件夹下双击运行
ren *.mp3 *.yst
for %%i in (*.yst) do ren "%%i" "A%%~ni".mp3
批量修改文件名
比如讲文件名中含有的字符A,全部替换为字符B。
类似的文件名批量更改,可以使用该批处理文件。
将如下代码复制粘贴到txt文本中,然后将.txt更改为.bat,然后放在需要修改的文件同一目录下,运行.bat批量处理文件即可。
@echo off
title 文件名字符替换
mode con cols=60 lines=20
::文件要是重名,会提示错误。
setlocal EnableDelayedExpansion & color 0a
:1
set a=
set b=
set c=
cls&echo.
set /p a= 请输入要被替换的字符:
cls&echo.
set /p b= 请输入替换“!a!”的字符,若要去掉“!a!”,请直接回车:
for /f "delims=" %%a in ('dir /b /a /a-d') do (
if "%%~fa" neq "%~0" (
set xz=%%~na
ren "%%~fa" "!xz:%a%=%b%!%%~xa" ))
cls&echo.&set /p c= 操作完成,输入0 返回,输入其它任意字符退出
if "!c!"=="0" (goto 1) else (exit)
GOTO :EOF
@echo off
for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do set day=%%a%%b%%c
for /f %%i in ('dir /b *.xlsx') do (ren %%i ?y%_hwq_%%i)
1.bat重命名文件
ren aaa.txt bbb.doc
解释:将aaa.txt 命名为bbb.doc
2.循环重命名一个文件夹下的所有结尾为xls的文件,前加上A_
for /f %%i in ('dir /b *.xls') do (ren %%i A_%%i)
3. 在原文件名前面加当前系统日期格式yyyyMMdd
@echo off
for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do set day=%%a%%b%%c
for /f %%i in ('dir /b *.txt') do (ren %%i ?y%%%i)
解释:tokens=1,2,3 delims=- 以‘-’为分隔符,将当前日期截取为三部分,分别付给a,b,c,设置day变量为截取到的三部分的结合,set day=%%a%%b%%c,即day=格式为yyyyMMdd的当天日期循环修改同一目录下的文件名,*.txt的都会被修改;i为原文件名
4.现有一堆照片,命名格式为0001.jpg,0002.jpg,0003.jpg,…,00020.jpg,……
要求在所有文件名前加上A_
@echo off
rem 启用"延缓环境变量扩充"
setlocal EnableDelayedExpansion
set a=1
rem 循环当前目录下所有图片的文件名,支持带空格的名称
for /f "delims=" %%i in ('dir /b *.jpg') do (
rem 如果没有相同的文件名,则继续
if not "%%~ni"=="%~n0" (
if !a! LSS 10 (ren "%%i" "A_000!a!.jpg") else ren "%%i" "A_!a!.jpg"
rem 设置数值型变量a=a+1
set /a a+=1
)
)
echo 批量重命名完成!
pause。