【问题标题】:How to rename files using CMD如何使用 CMD 重命名文件
【发布时间】:2017-07-25 19:05:32
【问题描述】:

我目前正在尝试使用命令提示符重命名多个文件,但无法正常工作。

所以这就是我想要做的。

我正在尝试重命名这些文件

file_aaa_001.jpeg
file_bbb_002.jpeg
file_ccc_003.jpeg

到以下文件:

001.jpeg
002.jpeg
003.jpeg

我知道这是超级初学者级别,但如果能得到一些帮助,我会很棒。

编辑:序列“aaa”不一定是相同的三个字母,它可以是任意数量的随机字母。 所以为了更清楚,我想删除从乞求到第二个“_”的字母。谢谢

【问题讨论】:

  • aaa bbb 序列是否继续超出zzz
  • 其实,序列是相当随机的,可以是“abs”、“dba”或其他任何东西。所以澄清一下,我只需要文件在第二个“_”之间有字符
  • 看看Mooniker。这是我朋友编写的一个命令行实用程序,用于重命名多个文件中的特定模式。您需要自己编译才能使用它(而且我认为它不支持正则表达式)。
  • @BrandonIbbotsonth 感谢分享。我去看看!!
  • 文件名中是否总是正好有两个_?前两部分fileaaa等也可以包含数字吗?

标签: batch-file cmd


【解决方案1】:

假设你只需要去掉前缀,使用

ren "*.*" "/////////*.*"

如果你要谨慎,只取那些以“file_”为前缀,后跟三个字符和序列前最后一个破折号的,并且只取那些带有jpeg扩展名的那些

ren "file_???_*.jpeg" "/////////*.*"

与往常一样,您希望在运行/修改命令之前备份文件夹。

【讨论】:

  • 很高兴知道。你可以接受我的回答,或者等待有人来提供更好的方法/解释。
  • @Martheen +1 我从来没有见过这种方法,也找不到任何东西。这是否记录在某处?
  • @aphoria 我还在其他关于在 SO 中重命名的问题中从几十个(未接受的)答案之一中找到了它。答案还提到他们从未真正找到合法文档
【解决方案2】:

假设每个文件名中总是正好有两个 _ 字符,并且中间至少有一个其他字符,您可以使用 for /F loop 来拆分文件名:

for /F "eol=: delims=" %%F in ('
    dir /B "*_*_*.jpeg"
') do (
    for /F "tokens=2* delims=_" %%I in ("%%~nF") do (
        rename "%%~F" "%%J%%~xF"
    )
)

【讨论】:

    猜你喜欢
    • 2021-02-17
    • 2015-06-05
    • 2021-04-19
    • 1970-01-01
    • 2015-02-05
    • 2014-07-17
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    相关资源
    最近更新 更多