为什么发放人防战备应急包批量修改文件名的批处理方法
有时候从网上down些文件下来,文件名都是一大串的字母和数字,不利于整理。所以我从网上了一段批处理的代码,做一个批处理的文件进行修改,非常的方便。
报效祖国的诗
复制以下代码保存为a.bat文件,放在你要改名的文件夹里运行
会把这个文件夹里的所有后缀名为.rm的文件都以 b+序号 的形式命名.
@echo off&setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *.rm') do (
if not "%%~ni"=="%~n0" (
if !a! LSS 10 (ren "%%i" "b0!a!.rm") else ren "%%i" "b!a!.rm"
set/a a+=1
)
)
注:蓝的字母是文件的格式,可以修改,如果原来的是txt,则都改成txt。红的字母是要改成的文件名的前缀,可以改成英文或者中文的名字,然后后面会自动添加上序号。
逆战演员
不过此方法只能修改无序的文件,我试了一下,会将原先文件的次序打乱。真是遗憾!王祖蓝黄光亮
=====================================================
相信有不少玩家遇到过想批量修改一个文件夹里面的同一类型或者多个类型的文件名吧,这里分享一个批处理
将以下代码复制到记事本里,另存为****.bat
运行就OK啦
@echo off
for /f "delims=" %%i in (dir /a-d /b /s 1\*.bmp) do (
ren "%%i" "%%~ni.jpg" )
张清为什么害毕福剑pause
这一段代码是将文件夹内的所有BMP 图片改为JPG的图片后缀
你们想怎么改,就照着修改就行了.
@echo off&setlocal enabledelayedexpansion
for /r %%a in (*.wma *.mp3) do (
if not defined %%~dpa set "var=%%~dpa"&set "%%~dpa=a"
for %%i in ("!var:~,-1!") do echo ren "%%a" "%%~ni_%%~nxa"
)
pause
 以上两个代码都必须放在歌手名文件夹所在的文件夹下使用,只有这样使用,才能保证获取到且只获取到你想要的音乐文件的完整路径名,并且,为后面的for语句正确地解析这些路径字符串提供保证。
随风的思路是:用 dir /a-d /b /s 来获取完整路径名,放到for语句中来解析完整路径字符串,用 %%~dpa. 来获取音乐文件所处的文件夹完整路径(这里使用了一个小技巧:在字符串最后添加一个点号,从而使得for语句的%%~ni把文件夹名当做文件名来处理),再用 %%~ni 获取文件夹名,也就是歌手名,把这个歌手名用下划线连接到原来的文件名前面,用ren来实现改名——%%~nxi 获取原文件完整的文件名和后缀名。
pusofalse的思路与随风大致相同,只不过在获取音乐完整路径的时候,换用了效率更高的 for /r 语句,并用一个变量var来获取音乐文件所在文件夹的完整路径,通过判断var是否经过赋值来判断当前处理的音乐文件是否位于同一目录下,因为直接用 %%~dpa 获取到的字符串最后有一个反斜杠,所以,第二个for语句中,用 !var:~,-1! 把最后的反斜杠去掉了(在for语句内部,如果要
引用已经发生了改变的变量,必须使用变量延迟功能,也就是最开始的 setlocal 语句),后面的思路和随风的一样。其实,pusofalse的代码大可不必判断当前处理的文件与上一次处理的文件是否位于同一目录下,因为 for /r 的时候,会获得文件的完整路径,只需要对完整路径直接进行操作就可以了,可以借鉴随风的做法,在 %%~dpa 的时候,直接在最后加上一个点号,可以使得效率进一步提升。
lidaimo说实话,解释代码是比较累人的,很多人宁肯写上百行代码,也不想解释其中的意思,因为往往是解释内容比代码内容还多,并且也不见得别人能领会你的意思,要想看懂别人的代码,还是需要有一点
基础了才好办,楼主不仅仅想知其然,还想知其所以然,这样的想法是非常值得提倡的,不过,还是需要先潜水一段时间,多翻翻论坛老帖,特别是教学区的帖子,才会有所收获。