http://hi.baidu.com/wangsen2235068/blog/item/bc1df3d39a6acb82a0ec9cd1.html
今天使用FDO SDK,发现下载下来的文件有点问题,有很多*.cpp0000644,*.hpp0000644类型的文件,需要把它们全部重命名为*.cpp, *.hpp格式,但是文件数量过多,一一手动修改太慢,又不想去下软件修改,经过研究发现了dos命令中有循环语句for相当好用。
一下是我用来批量修改的命令:
D:\fdo-3.2.3>for /r . %I in (*.cpp0000644) do @ren %~fI %~nI.cpp
D:\fdo-3.2.3>for /r . %I in (*.hpp0000644) do @ren %~fI %~nI.hpp
D:\fdo-3.2.3>for /r . %I in (*.h0000644) do @ren %~fI %~nI.h
D:\fdo-3.2.3>for /r . %I in (*.gif0000644) do @ren %~fI %~nI.gif
D:\fdo-3.2.3>for /r . %I in (*.html0000644) do @ren %~fI %~nI.html
D:\fdo-3.2.3>for /r . %I in (*.vcproj0000644) do @ren %~fI %~nI.vcproj
在命令中,/r 这个参数的意思是选择在那个目录中进行,如果用 /r . 则表示在当前目录树内进行, %I是循环变量, in后的()里表示 %I 的取值集合, do后的表示所执行的dos命令,这里我使用的是重命名ren, %~fI表示要重命名的文件的完整路径, %~nI.cpp表示把该文件重命名为.cpp文件,依此类推。
幸好有dos的这个命令,不然我差点要去自己写一个vc程序了。。。
具体的for命令的用法,可以参看windows的说明,在cmd.exe里输入 for /?即可,也可百度一下。。。
========================================
for的用法:
对一组文件中的每一个文件执行某个特定命令。
FOR %variable IN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
如果命令扩展名被启用,下列额外的 FOR 命令格式会受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的
FOR 语句。如果在 /R 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
或者,如果有 usebackq 选项:
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
filenameset 为一个或多个文件名。继续到 filenameset 中的
下一个文件之前,每份文件都已被打开、读取并经过处理。
处理包括读取文件,将其分成一行行的文字,然后将每行
解析成零或更多的符号。然后用已找到的符号字符串变量值
调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开
的第一个空白符号。跳过空白行。您可通过指定可选 "options"
参数替代默认解析操作。这个带引号的字符串包括一个或多个
指定不同解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的
默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之后
分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 filenameset
中使用双引号扩起文件名称。
某些范例可能有助:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将
每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
空格定界符号。请注意,这个 for 程序体的语句引用 %i 来
取得第二个符号,引用 %j 来取得第三个符号,引用 %k
来取得第三个符号后的所有剩余符号。对于带有空格的文件
名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 usebackq 选项,否则,双引号会
被理解成是用作定义某个要分析的字符串的。
%i 专门在 for 语句中得到说明,%j 和 %k 是通过
tokens= 选项专门得到说明的。您可以通过 tokens= 一行
指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或
'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且,
同时不能有 52 个以上都在使用中。
您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,
用单引号将括号之间的 filenameset 括起来。这样,该字符
串会被当作一个文件中的一个单一输入行。
最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将
括号之间的 filenameset 变成一个反括字符串。该字符串会
被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进
内存,并被当作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
会枚举当前环境中的环境变量名称。
另外,FOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:
~I - 删除任何引号("),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩充到
空字符串
可以组合修饰符来得到多重结果:
%~dpI - 仅将 %I 扩充到一个驱动器号和路径
%~nxI - 仅将 %I 扩充到一个文件名和扩展名
%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个驱动器号和路径。
%~ftzaI - 将 %I 扩充到类似输出线路的 DIR
在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
比较易读,而且避免与不分大小写的组合键混淆。
分享到:
相关推荐
DOS实现批量文件重命名工具,可以将指定文件夹下的所有文件进行重命名操作。
REN批量重命名任意文件名字,数字递增.bat
批量文件重命名工具
通过DOS指令的汇编语言实现批量重命名文件。
文件内有具体操作介绍 1:dos获取文件目录 2:自动截取文件名 3:手工设定新名 4:复制dos命令并执行
dir获取文件名日期,excel编辑文件名格式,ren批量替换文件名。
顺便将DOS下的批处理也整理了下,功能上,bat批处理程序可以实现当前目录下指定类型文件或所有文件夹的重命名,命名的顺序可以是1.时间 2.名称 3.大小 4.扩展名,(前加负号则代表逆序),如图。
bat 批处理重命名 批量jpg文件 本人亲测
在你的Windows电脑上批量修改文件名是非常简单的。选择所有的文件,按F2,... 为了有效的批量修改文件名,你可以学习一些有点复杂的shell编程语言(SED,AWK,Perl)或者更简单的,只是使用一个电子表格和几个dos命令。
在windows下创建相关bat文件,然后按照readme.txt中的步骤,依次进行即可批量重命名文件,在运行rename.bat的时候dos窗口中会出现“存在一个重名文件,或是找不到文件”可以忽略这个信息,对结果没影响。
dos_命令_bat命令_遍历文件夹目录树批量修改_后缀名
本软件是用批处理制作的实用小工具,安装后会给“发送到”增加一些实用的特性,如:复制文件路径名、批量重命名、快速打开目录、剪贴板文字保存到文件等等。功能的实现是由20多个批处理脚本完成的,批处理有很强的可...
支持批量修改照片exit属性,免费简单易用 DOS命令方式 exiftool.exe "-DateTimeOriginal+=0:00:60 11:22:0" F:\DCIM\100_FUJI 这个命令是把目录中所有文件的拍摄日期往后挪0年0个月60天 11小时22分钟 exiftool.exe ...
Filekit是一组文件处理GUI工具,可以将其放入USB闪存中,因此无需安装。... 您可以使用此功能批量重命名文件。 此版本增加了一个选项,可以从结果面板中选择文件,并允许您进行迭代处理。 将来会提供其他功能。
——支持快速书签、批量重命名等便捷操作; ——支持多种文件的预览,可以通过插件扩展其预览功能; ——便捷的命令行功能,内置DOS控制台; ——丰富的操作提示信息和友好的操作界面; ——占用的系统资源极少,...
——支持快速书签、批量重命名等便捷操作; ——支持多种文件的预览,可以通过插件扩展其预览功能; ——便捷的命令行功能,内置DOS控制台; ——丰富的操作提示信息和友好的操作界面; ——占用的系统资源极少,...
——支持快速书签、批量重命名等便捷操作; ——支持多种文件的预览,可以通过插件扩展其预览功能; ——便捷的命令行功能,内置DOS控制台; ——丰富的操作提示信息和友好的操作界面; ——占用的系统资源极少...
•批量重命名:用指定的规则重命名大量文件,还可以在文本编辑器中编辑文件名。 •程序界面支持多种语言:程序界面可以改成多种语言,安装文件自带英语、德语、法语等语言文件,简体中文、繁体中文等其他语言文件则...
•批量重命名:用指定的规则重命名大量文件,还可以在文本编辑器中编辑文件名。 •程序界面支持多种语言:程序界面可以改成多种语言,安装文件自带英语、德语、法语等语言文件,简体中文、繁体中文等其他语言文件则...
•批量重命名:用指定的规则重命名大量文件,还可以在文本编辑器中编辑文件名。 •程序界面支持多种语言:程序界面可以改成多种语言,安装文件自带英语、德语、法语等语言文件,简体中文、繁体中文等其他语言文件则...