Autohotkey 自动热键可以创建重命名液滴吗?

Autohotkey 自动热键可以创建重命名液滴吗?,autohotkey,renaming,Autohotkey,Renaming,我是一名文书助理。从我们的文档管理系统导出文件时,它们的到达方式如下: BIGNAME-#999999-这是_文件_Name _Right _Here.doc 我想基本上创建一个自动热键滴,切掉BIGNAME和number,然后将所有下划线转换为破折号,创建一个最终结果: 这是此处的文件名。doc 不幸的是,对于自动热键,我还是个新手,甚至不知道从哪里开始 有人知道是否已经存在一个使用自动热键进行大量重命名的脚本,我可以在它之后对其进行建模吗?或者其他完成这个项目的建议 这件小事对我的日常工作有

我是一名文书助理。从我们的文档管理系统导出文件时,它们的到达方式如下:

BIGNAME-#999999-这是_文件_Name _Right _Here.doc

我想基本上创建一个自动热键滴,切掉BIGNAME和number,然后将所有下划线转换为破折号,创建一个最终结果:

这是此处的文件名。doc

不幸的是,对于自动热键,我还是个新手,甚至不知道从哪里开始

有人知道是否已经存在一个使用自动热键进行大量重命名的脚本,我可以在它之后对其进行建模吗?或者其他完成这个项目的建议

这件小事对我的日常工作有很大的帮助,所以我非常感谢你们为我到达目的地提供的任何帮助

(如果有人提出建议,我愿意接受非AHK替代方案。)


提前感谢。

我建议使用名为的Windows资源管理器替代方案

除了可以方便地查看并排的两个文件夹外,它还具有灵活的重命名功能

编辑

下面是它的工作原理(比这个详细的列表听起来要简单得多-真的!)

  • 选择文件后,点击文件->多重重命名。捷径是Ctrl+M
  • 您将看到以下对话框
  • 屏幕底部是要删除的文本以及要替换的内容
  • 这创建了一种规则或模式
  • 请注意,您可以将这些规则中的每一条保存为概要文件,以便重复使用
  • 在对话框顶部,它显示每个选定文件的原始名称和新名称
  • 您还应该关闭“重命名后关闭对话框”-我在截图时忘记了这一点
  • (显然)点击重命名

  • 这是您第一次完成重命名
  • 在第二个屏幕截图中,我将下划线替换为空格
  • 注意,我还选中了“替换所有引用”,并将其保存为配置文件

现在,文件被重命名,如您所愿。(如果你真的想去掉连字符,你也可以这样做)

这就是配方。将来,您可以选择任意数量的文件,并进行批量重命名,然后只需几个步骤即可应用这两个配置文件中的每一个来重命名所有文件

(如果这仍然是太多的步骤,您可以随时录制自动热键宏来替换这些步骤…)

如果您只想重命名大量文件,那么有很多特定的工具可用,这可能太复杂了

例如,过去我大量使用


但我喜欢FreeCommander的一点是,它有许多其他真正有用的功能(例如快速过滤,只显示名称中包含特定文本的文件),这为我节省了大量时间。

为了完整起见,这里有一个使用AutoHotkey解决问题的脚本。正则表达式适用于给定的示例-如果模式不同,它们当然需要调整

将文件拖放到此脚本的文件中将计算新文件名并提示用户重命名它

; Save dropped file path to a variable.
DroppedFilePath = %1%

; Convert the dropped file path to a long filename.
Loop, %DroppedFilePath%, 1
    DroppedFilePathLong := A_LoopFileLongPath

; Create seperate variables for the filename and folder.
SplitPath, DroppedFilePathLong, OutFileName, OutDir

; Use a RegEx to find the start and length of the '#9999999-' string.
Start := RegExMatch(OutFileName, "P)#[0-9]+-", Length)

; Exit now if the RegEx didn't match anything.
If Length < 1
    {
    MsgBox File does not match pattern.
    ExitApp
    }

; Add the start and length positions to get the position at the end of the '#9999999-' string.
EndString := SubStr(OutFileName, Start + Length)

; Replace hypens and underscores with spaces.
Result := RegExReplace(EndString, "(-|_)", " ")

; Add our new filename to the existing folder name to a variable.
ResultPath := OutDir . "\" . Result

; Prompt the user - make sure we got things right.
MsgBox, 36, Rename File, Rename file`n`n%OutFileName%`n`nto`n`n%Result%?
IfMsgBox, No
    ExitApp

; Rename the file.
FileMove, %DroppedFilePath%, %ResultPath%

ExitApp
;将删除的文件路径保存到变量。
DroppedFilePath=%1%
; 将删除的文件路径转换为长文件名。
循环,%DroppedFilePath%,1
DroppedFilePathLong:=A_LoopFileLongPath
; 为文件名和文件夹创建单独的变量。
SplitPath、DroppedFilePathLong、OutFileName、OutDir
; 使用正则表达式查找“#999999-”字符串的开头和长度。
开始:=RegExMatch(OutFileName,“P)#[0-9]+-”,长度)
; 如果正则表达式与任何内容都不匹配,请立即退出。
如果长度<1
{
MsgBox文件与模式不匹配。
出口
}
; 添加起始位置和长度位置,以获取“#999999-”字符串末尾的位置。
EndString:=SubStr(OutFileName,Start+Length)
; 用空格替换hypens和下划线。
结果:=RegExReplace(EndString,(-|)),“”)
; 将新文件名添加到变量的现有文件夹名中。
结果路径:=OutDir。"\" . 结果
; 提示用户-确保我们的操作正确。
MsgBox,36,重命名文件,重命名文件`n`n%OutFileName%`n`nto`n`n%Result%?
IfMsgBox,否
出口
; 重命名该文件。
文件移动,%DroppedFilePath%,%ResultPath%
出口

另一种选择是使用免费的“”,或命令行版本,名为。

您说要将下划线转换为破折号,但您的示例似乎同时将下划线和破折号转换为连字符。