【问题标题】:How to rename file with pattern using batch script如何使用批处理脚本重命名带有模式的文件
【发布时间】:2015-02-13 10:57:20
【问题描述】:

例如,我有一个名为 pair.txt 的 .txt 文件。

例子:

AAA_BBB_CCC_DDD_EEE_FFF_GGG_HHH.idoc.xml            AAAA
AAA_BBB_CCC_DDD_EEE_FFF_111_222.idoc.xml            BBBB
AAA_BBB_CCC_DDD_EEE_FFF_333_444.idoc.xml            CCCC

现在这个文件包含 2 列文件名。第一列将是重命名第二列的模式。现在我想使用第 6 个和第 7 个“_”的右侧作为模式。第二列中文件的最终文件名必须是:

AAAA.GGG_HHH
BBBB.111_222
CCCC.333_444

如您所见,我没有包含 .idoc.xml 部分。现在我想把代码放在这个 for 语句中:

for /f "tokens=1,2" %%a in ('type c:\user\pair.txt') do (
        echo Renaming file : %%b
        )

我将如何做到这一点?

【问题讨论】:

    标签: windows file batch-file cmd


    【解决方案1】:
    for /f "usebackq tokens=1,2" %%a in ("c:\user\pair.txt") do (
        for /f "tokens=7,8 delims=_." %%c in ("%%a") do (
            echo Renaming file : %%b = %%b.%%c_%%d
        )
    )
    

    使用第二个for 命令拆分第一列,然后使用正确的标记

    【讨论】:

    • 这部分是否“delims=_”。是指开始和结束?
    • @PeterS,不,它表示用于将行拆分为标记的字符。 tokens=7,8 表示,从拆分后的所有可用令牌中,将哪些内容检索到 for 可替换参数中。
    • 如何将新文件重定向到我想要的目录?
    • 我在 echo 之后尝试了这个,但它不起作用 ren "C:\FileRename\Outputs\%%b" "C:\FileRename\New Outputs\%%b.%%c_%%d "
    • @PeterS,ren用于更改已有文件的名称和扩展名,所以ren命令的第一个参数用于定位文件,第二个参数只是最终文件名和扩展名,不带路径,因为文件不会被移动,只是重命名。也许你需要使用 copymove 而不是 ren
    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多