【问题标题】:Rename file, remove unnecessary character from file name using Autohotkey重命名文件,使用 Autohotkey 从文件名中删除不必要的字符
【发布时间】:2018-02-07 10:07:00
【问题描述】:

我正在尝试使用 Autohotkey/RegEx 重命名文件(通常是下载的字幕)以丢弃不必要的字符,删除“。”以最终重命名的文件将仅包含名称和四位数年份的方式留出空间。一个例子如下

  1. 原始文件名/路径

D:\Folder\子文件夹\Hamburger.Hill.1987.BluRay.720p.x264.srt

  1. 重命名的文件应该是这样的

D:\Folder\Sub 文件夹\Hamburger Hill 1987.srt

最初我只打算删除“.”。通过贡献“Ro Yo Mi”,AHK 代码可以删除“.”。到太空(Current Code Part 1),它回答了我最初的问题。

后来我意识到也有可能删除不必要的字符(仅保留名称、年份和原始文件扩展名)。 Ro Yo Mi”还尝试添加新的代码行来重命名文件名中不必要的字符串 (Current Code Part 2)。虽然代码表面上显示可以重命名(显示在消息代码中)但最终实际上无法重命名。可能需要进一步升级或更改才能使其按预期工作。代码的当前状态可以在给定的参考中找到。

【问题讨论】:

    标签: regex autohotkey


    【解决方案1】:

    说明

    文件没有被重命名的问题是因为没有提供路径。因此 AutoHotKey 假定它的当前工作目录是发生更改的地方。由于这些文件实际上不在 AutoHotKey 的脚本目录中,因此 FileMove 命令失败。

    此脚本假定您将提供完整路径和文件名。因此,有了这些信息,这就是我删除字符并使用 AutoHotKey 重命名文件的方式。

    #.:: ; Replace all "." (except before extension) with spaces 
    OldCLip := ClipboardAll 
    Clipboard=
    Send ^c
    ClipWait, 1
    ; MsgBox % Clipboard    ; for testing 
    
    if ( Clipboard ) { 
    
        ; set the value
        String := Clipboard
        ; String := "D:\Folder\Sub Folder\the.Hamburger.Hill.1987.BluRay.720p.x264.srt"
    
        ; split string into the desired components: path, filename upto and including year, and extension
        RegexMatch(String, "^(.*\\)(.*?[0-9]{4}).*([.][^.]{3})", SubPart)
        FullPath := SubPart1
        Filename := RegexReplace(SubPart2, "\.", " ")  ; replace dots in the file name with spaces to improve readablity
        Filename := RegexReplace(Filename, "i)^the\s+", "") ; remove the `the` and trailing spaces from the beginning of the filename if it exists.
        Extension := SubPart3
    
        NewPathFilename := FullPath . Filename . Extension
    
        strMessage := "Renaming '" . String . "' to '" . NewPathFilename . "'"
        MsgBox, % strMessage
        FileMove, % String, % NewPathFilename
        } ; end if
    
    Clipboard := OldClip 
    return
    

    示例消息框

    将“D:\Folder\Sub Folder\the.Hamburger.Hill.1987.BluRay.720p.x264.srt”重命名为“D:\Folder\Sub Folder\Hamburger Hill 1987.srt”

    【讨论】:

    • 上面的代码使它像汉堡山 1987.Blu。因此,它将扩展名从 .srt 更改为 Blu。但是,如果“。”先前已删除(使用先前的代码),它按预期重命名(Hamburger Hill 1987.srt)。不确定是否需要两个单独的代码。
    • 是的,你是对的,它正在这样做。我已经更新了分解路径和文件名的正则表达式,所以现在它可以按预期工作了。
    • 它现在可以工作了。将其视为答案。感谢您的贡献。
    • 点击此帖子下方左侧的复选标记。 (我认为它就在箭头的正下方)。作为问题的作者,您会在每个答案的左侧看到一个复选标记的轮廓。它将位于上下投票箭头的正下方。单击最能回答您的问题的帖子旁边的复选标记以接受该答案为最佳答案。
    • 更新代码以满足您的新要求。单击答案正下方的“已编辑”链接以查看更改内容。
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多