【问题标题】:Renaming file substring重命名文件子字符串
【发布时间】:2011-12-27 22:45:08
【问题描述】:

我在一个目录(windows)中有一堆文件,我希望重命名这些文件,以便从每个文件中删除某个字符序列。例如,我希望从类似于下面的文件名中删除“-FFF”。

asd-dfj-FFF.mp3
dfd-sdj-FFF.mp3

最好的方法是什么?任何语言都可以。我知道 C 和 Java,所以我更喜欢使用不是他们的语言,这样我就可以学习/看到另一种语言的实际应用。

【问题讨论】:

    标签: windows substring filenames rename


    【解决方案1】:

    我很确定您只需在 Windows cmd shell 中使用 rename command 即可完成此操作,无需其他语言。

    在临时目录中的几个测试文件上试试这个:

    C:\tmp\> ren *-FFF.mp3 *.mp3
    

    (我没有方便验证的 windows 框,但我记得这在 DOS 时代可以使用,Microsoft 文档建议它仍然有效)

    【讨论】:

    • 嗯,不幸的是,这不起作用,如果我只做ren *.mp3 *.txt 它可以工作,但添加*-FFF.mp3 *.mp3 不会导致任何事情发生。但是,当我去ren *-FFF.mp3 *.txt 时,文件的文件扩展名会发生变化,但名称不会
    • 如果你这样做:ren *.mp3 * 然后ren *-FFF *,那会起作用吗?
    • 根据@Danish 的建议,最好在 perl 或 python 中使用正则表达式。
    【解决方案2】:

    考虑到没有解决方案,我将发布我自己的解决方案。

    我根据需要制作了以下适用于我的案例的批处理文件。这会去除附加了 -aSBo 的文件名。

    ::Change the *-aSBo.* to whatever files you want to strip
    for %%f in (*-aSBo.*) do call :rename "%%f"
    
    goto :eof
    
    :rename
    set var="%~n1
    set var1=%~x1"
    ::Change the 0 (start) and -5 (end) values to match the substring start/end values that you want to rename to
    ren %1 %var:~0,-5%%var1%
    

    【讨论】:

      【解决方案3】:

      我想说看看 Windows Power Shell、Perl 或 Python。我个人最喜欢的是 Python。

      以上三种都是脚本语言,非常适合你想做的事情。

      【讨论】:

      • 您可以在此堆栈溢出页面 - stackoverflow.com/questions/225735/… 找到几个选项来执行基于模式的重命名。在我看来,代码看起来比批处理文件版本更干净、更易读。
      猜你喜欢
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2016-11-10
      • 2019-06-27
      • 2013-02-06
      • 1970-01-01
      • 2015-05-19
      相关资源
      最近更新 更多