`
yangyiqian
  • 浏览: 117604 次
  • 来自: ...
社区版块
存档分类
最新评论

[转]DOS下批量重命名

阅读更多
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实现批量文件重命名工具

    在提供的压缩包中,`batch_renqme.bat`就是这样一个批处理脚本,它用于批量重命名指定目录下的所有文件。我们首先来理解批处理的基本结构和常用的命令。 1. **批处理文件结构**: - 批处理文件以`.bat`为扩展名,...

    REN批量重命名任意文件名字,数字递增.bat

    REN批量重命名任意文件名字,数字递增.bat

    批量文件重命名工具.zip

    1. HaoZip.dll:这是一个动态链接库文件,用于提供与压缩和解压相关的功能,可能与该批量重命名工具的压缩/解压缩操作有关。HaoZip可能是该软件使用的自定义压缩库。 2. HaoZipLang_chs.dll:这同样是一个动态链接库...

    批量批量重命名的方法

    批量重命名文件是DOS命令行的一大实用功能。 1. **DIR命令获取文件名和日期**: `DIR`命令用于列出目录中的文件和子目录。通过添加适当的参数,我们可以获取包含文件创建日期的信息。例如,`DIR /OD`将按照文件的...

    文件批量重命名方法

    ### 文件批量重命名方法 在日常工作中,我们经常会遇到需要对大量文件进行重命名的情况,尤其是在处理图片、视频等媒体文件时。手动一个一个地修改文件名不仅效率低下,而且容易出错。因此,掌握一些文件批量重命名...

    通过DOS指令的汇编语言实现批量重命名文件

    通过DOS指令的汇编语言实现批量重命名文件。

    BAT批处理脚本-批量重命名.zip

    在"批量重命名.bat"中,我们可以推测它会使用`for`循环遍历特定目录下的文件,并按照预设规则对文件名进行更改。 在批处理脚本中,`for`循环可以这样使用: ```batch for /R %i in (*) do ( echo %i ren %i 新的...

    批量重命名

    在这个场景下,我们讨论的是一款控制台交互式的批量重命名软件,它通过运行`.bat`(批处理)文件来执行重命名操作。 首先,我们要理解什么是批处理文件。批处理文件是Windows操作系统中的一个特色,它由一系列DOS...

    excel 批量重命名文件和文件夹名

    文件内有具体操作介绍 1:dos获取文件目录 2:自动截取文件名 3:手工设定新名 4:复制dos命令并执行

    BAT批处理脚本-批量重命名 (按指定拓展名).zip

    `ren`命令的基本语法是`ren "原文件名" "新文件名"`,在批量重命名场景下,可能会配合通配符(如*或?)来选择符合特定模式的一系列文件,并将它们的扩展名更改为指定的新扩展名。 批处理脚本的优势在于它的灵活性和...

    批处理重命名文件v02值得收藏-批处理文件重命名dos m.rar

    顺便将DOS下的批处理也整理了下,功能上,bat批处理程序可以实现当前目录下指定类型文件或所有文件夹的重命名,命名的顺序可以是1.时间 2.名称 3.大小 4.扩展名,(前加负号则代表逆序),如图。

    BAT批处理脚本-文件相关操作-批量重命名 (按指定拓展名).zip

    本文将详细解析标题为“BAT批处理脚本-文件相关操作-批量重命名 (按指定拓展名)”的知识点,以及如何使用这种脚本来实现批量重命名文件。 批处理脚本(.bat)是Microsoft Windows系统中的一种文本文件,它包含了...

    EXCEL中使用REN命令结合BAT批处理实现照片批量改名.docx

    然后,我们可以在该文件中输入之前在 EXCEL 中生成的批量重命名命令。最后,我们可以运行该批处理文件,实现照片批量改名。 知识点 4:使用 BAT 批处理命令实现照片批量改名 在运行"重命名.BAT"文件时,我们可以...

    重命名XP中实现文件名批量修改.doc

    在这种情况下,可以使用DOS命令行来进行更灵活的批量重命名。例如,如果你想将一系列文件如“SV400001.DOC”,“SV400002.DOC”等,批量重命名为“x-001001.DOC”,“x-001002.DOC”等,可以通过以下步骤操作: 1. ...

    批量文件重命名

    一、基础方法:批量重命名(通过文件资源管理器) 1. 打开文件资源管理器,找到需要重命名的文件所在的文件夹。 2. 选中要重命名的文件,点击第一个文件,然后按住Shift键或Ctrl键选择连续或不连续的多个文件。 3. ...

    bat 批处理重命名 批量jpg文件

    bat 批处理重命名 批量jpg文件 本人亲测

    用Excel和DOS命令批量修改文件名.doc

    4. **生成DOS命令**: 在新的列中输入Excel公式,生成用于批量重命名的DOS命令。例如: ```excel =CONCATENATE("ren ", A1, " ", B1) ``` 这里,`A1`代表原始文件名,`B1`代表新文件名。 5. **复制并创建批处理...

    dos_命令_bat命令_遍历文件夹目录树批量修改_后缀名

    echo 批量重命名完成。 pause ``` 在这个脚本中,`@echo off`用来关闭命令提示符的回显,`setlocal enabledelayedexpansion`则是为了在循环中启用变量延迟扩展,这样我们就可以在循环体内修改和使用变量。`set`命令...

    重命名消掉括号

    在实际应用中,批量重命名可以解决许多问题,例如整理下载的图片(通常带有复杂的下载链接信息),或者清理备份数据(原始文件名可能包含日期或版本号括号)。通过学习和使用批处理脚本,我们可以自定义重命名规则,...

    Excel2021使用重命名命令ren结合批处理实现批量修改文件名.docx

    ren 命令是一个基本的 DOS 命令,可以用来重命名文件。使用 ren 命令可以批量修改文件名,並且可以添加序号、日期、时间等信息到文件名中。 例如,如果需要将文件名从 "oldname" 改为 "newname",可以使用以下命令...

Global site tag (gtag.js) - Google Analytics