Autohotkey 自动热键可以创建重命名液滴吗?
我是一名文书助理。从我们的文档管理系统导出文件时,它们的到达方式如下: BIGNAME-#999999-这是_文件_Name _Right _Here.doc 我想基本上创建一个自动热键滴,切掉BIGNAME和number,然后将所有下划线转换为破折号,创建一个最终结果: 这是此处的文件名。doc 不幸的是,对于自动热键,我还是个新手,甚至不知道从哪里开始 有人知道是否已经存在一个使用自动热键进行大量重命名的脚本,我可以在它之后对其进行建模吗?或者其他完成这个项目的建议 这件小事对我的日常工作有很大的帮助,所以我非常感谢你们为我到达目的地提供的任何帮助 (如果有人提出建议,我愿意接受非AHK替代方案。)Autohotkey 自动热键可以创建重命名液滴吗?,autohotkey,renaming,Autohotkey,Renaming,我是一名文书助理。从我们的文档管理系统导出文件时,它们的到达方式如下: BIGNAME-#999999-这是_文件_Name _Right _Here.doc 我想基本上创建一个自动热键滴,切掉BIGNAME和number,然后将所有下划线转换为破折号,创建一个最终结果: 这是此处的文件名。doc 不幸的是,对于自动热键,我还是个新手,甚至不知道从哪里开始 有人知道是否已经存在一个使用自动热键进行大量重命名的脚本,我可以在它之后对其进行建模吗?或者其他完成这个项目的建议 这件小事对我的日常工作有
提前感谢。我建议使用名为的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%
出口
另一种选择是使用免费的“”,或命令行版本,名为。您说要将下划线转换为破折号,但您的示例似乎同时将下划线和破折号转换为连字符。