在DOS里我如何批量修改文件名

当我们要批量修改文件名的时候,我们要如何去做到呢?首先我们要知道这些文件都是上面格式的,下面小编给大家分享下要如何做到吧,里面都有变量和参数介绍。

今天要批量重命名一些文件,(即:目录FILE下有很多子目录file1,file2,file3……filen子目录中都有一个文件aaa.jpg,现要实现aaa.jpg重名为带子目录的名称,如file1下面的命名为file1.jpg),想到DOS处理,网上找了些现成脚本,没达到预期的目的,一时恼火,就小补了下DOS相关知识,包括基本命令,重点研究了下批量处理命令。

如何在DOS下批量修改文件名?

方法一的思路与方法二大致相同,只不过在获取完整路径的时候,换用了效率更高的 for /r 语句,并用一个变量var来获取文件所在文件夹的完整路径,通过判断var是否经过赋值来判断当前处理的音乐文件是否位于同一目录下,因为直接用 %%~dpa 获取到的字符串最后有一个反斜杠,所以,第二个for语句中,用 !var:~,-1! 把最后的反斜杠去掉了(在for语句内部,如果要 引用已经发生了改变的变量,必须使用变量延迟功能,也就是最开始的 setlocal 语句),后面的思路和方法二的一样。其实,方法一的代码大可不必判断当前处理的文件与上一次处理的文件是否位于同一目录下,因为 for /r 的时候,会获得文件的完整路径,只需要对完整路径直接进行操作就可以了,可以借鉴随风的做法,在 %%~dpa 的时候,直接在最后加上一个点号,可以使得效率进一步提升。

方法一代码:

01@echo off &setlocal enabledelayedexpansion

02for /r %%a in (aaa.jpg) do (if not defined %%~dpa set "var=%%~dpa"&set

03"%%~dpa=a"

04for %%i in ("!var:~,-1!")do ren "%%~fa" "%%~ni.jpg")

05pause

复制代码

方法二用 dir /a-d /b /s 来获取完整路径名,放到for语句中来解析完整路径字符串,用 %%~dpa. 来获取音乐文件所处的文件夹完整路径(这里使用了一个小技巧:在字符串最后添加一个点号,从而使得for语句的%%~ni把文件夹名当做文件名来处理,我直接运行以上脚本发现一直出问题,后来发现先显示下%%~dpa. 即在ren 前加上echo "%%~dpa." 再执行脚本就OK了,具体原因不明,望高手解答),再用 %%~ni 获取文件夹名,用ren来实现改名,%%~nxi 获取原文件完整的文件名和后缀名。

方法二代码:

01@echo off

02for /f "delims=" %%i in ('dir /a-d /b /s D:1*.jpg') do (ren "%%i" "%%~nxi" )

03pause

复制代码

基本格式(这里写的是在命令行里用的格式,如果是在批处理中,需要把其中%再多加个%形成%%):

for /参数 %变量 in (集) do 命令

注:上面除中文的以外,其余的是按它的格式要求书写的,大小写都行。

参数:FOR分四种参数 D L R F,并且有的参数还可附加另外的选项下面会分别介绍

变量:(记住如果是在批处理中使用for命令时,变量前的%需改为%%)这个变量名是由单个字母组成且区分大小写(原帮助是这么说的,实际运用中用单个数字作为变量名试过证明也可行),如%B和%b代表的是不同的变量。

一、参数 /d

for /d %%变量 in (集) do 命令

/d 参数是指定仅对目录而不是文件执行的for命令。

for /d %a in (c:*.*) do @echo %a

二、参数 /R

/R参数之后还可带盘符及路径

for /r 此处可以带有路径 %变量 in (集) do 命令

例1:

01@echo

off

02rem 显示d:盘中所有文件名为file1和file2的列表

03for /r d: %%h in (file1,file2) do if exist %%h echo %%h

04pause

复制代码

例2:

01@echo off

02rem 删除C盘中所有*.chk的文件

03for /r c: %%h in (*.chk) do del /q %%h

04pause

复制代码

注:del /q 表示用安静模式删除(不需确认)

三、参数 /L

for /L %%变量 in (起始值,每次增值,结束时的比较值) do 命令

(上面L也可用小写,主要为了视觉上不与数字1混淆而没用小写)

(起始值,每次增值,结束时的比较值)相当于一个等差数字序列,从“起始值”的数字开始,每次增加多少(也可设定为负数)为“每次增值”,并与“结束时的比较值”比较,超出则退出for循环(也不执行本轮后面的do 命令)。

例:

01@echo off

02::在D盘建立aa1~ aa5五个文件夹

03for /L %%i in (1,1,5) do md d:aa %%i

04pause

复制代码

四、参数 /f

这个参数/f将会打开(集)里的文件,使for命令能处理文本文件的读取和添加删除替换等编辑性的操作,可谓功能强大,因此也相对复杂一些。

五、变量

~I - 删除任何引号("),扩充 %I

%~fI - 将 %I 扩充到一个完全合格的路径名

%~dI - 仅将 %I 扩充到一个驱动器号

%~pI - 仅将 %I 扩充到一个路径

%~nI - 仅将 %I 扩充到一个文件名

%~xI - 仅将 %I 扩充到一个文件扩展名

%~sI - 扩充的路径只含有短名

%~aI - 将 %I 扩充到文件的文件属性

%~tI - 将 %I 扩充到文件的日期/时间

%~zI - 将 %I 扩充到文件的大小

%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串。

以上便是在DOS下批量修改文件名的一些见解和方法,用户可以根据变量和参数对批量修改文件名的文件进行处理。

[在DOS里我如何批量修改文件名]

相关文章

新年公鸡剪纸步骤图解

新年到了,大家一起来剪纸吧!今天来剪个鸡图案怎样呢?下面小编收集了新年公鸡剪纸步骤图解,供大家参考!工具/原料两张红纸剪刀笔胶水方法/步骤我们先准备好一张正方形大红纸,一支笔,一把剪刀备用。我们先用铅...
资料大全2016-06-07
新年公鸡剪纸步骤图解

眉毛怎么画

对于眉毛,我想大家是再也熟悉不过的了,是人体面部位于眼睛上方的毛发。有一定的生长周期,会自然脱落,它也是人脸部美的重要组成部分。眉毛的功能也是很大的,主要是防止水流入眼睛。眉头也可阻挡头皮屑和其他微笑...
资料大全2018-03-02
眉毛怎么画

关节弹响怎么办

很多朋友在下蹲起立的时候都会发现自己的关节有弹响的声音,并且这种情况也不是一两次。但是总的来说似乎还没有很明显对身体有什么伤害,所以很好奇到底这关节之间的弹响是怎么回事。其实关节发出弹响的原因很多的,...
资料大全2017-01-03
关节弹响怎么办

事业单位提前退休年龄最新规定

目前网上很多事业单位的工作人员都在疑问,如何才能提前退休,需要满足怎样的条件呢?其实事业单位工作人员需要满足以下条件。(温馨提示:本文仅供参考!)工作年限满20年且距法定退休年龄小于5年(含5年),或...
资料大全2014-06-08
事业单位提前退休年龄最新规定

中国灯具十大品牌排行榜 前十名

照明灯具什么牌子好?照明灯具哪个牌子好?照明灯具品牌都有哪些?下面是unjs小编整理的相关内容,欢迎大家阅读!1飞利浦照明(始创于1891年荷兰,中国驰名商标,世界知名品牌,全球100个最具价值品牌,...
资料大全2015-07-09
中国灯具十大品牌排行榜 前十名

墙保温+外墙涂料施工工艺标准 -资料

  1.基层检查与处理:基层墙体应毛糙、基本平整,如偏差太大,先用1:2水泥砂浆找平,墙保温+外墙涂料施工工艺标准。混凝土表面要刷界面剂。用喷枪将界面剂均匀喷在基层表面,而后抹保温砂浆。墙面阳角及易磕...
资料大全2019-02-07
墙保温+外墙涂料施工工艺标准 -资料