0

I'm a clerical assistant. When files get exported from our document management system, they arrive like this:

BIGNAME-#9999999-This_Is_The-File_Name_Right_Here.doc

I'd like to basically create an AutoHotKey droplet that chops off the BIGNAME and number, and then converts all the underscores to dashes, creating an end result of:

This Is The File Name Right Here.doc

Unfortunately, I'm still a bit of a newb when it comes to AutoHotKey, and I'm not even sure where to start.

Does anyone know if a script that heavily renames using AutoHotKey already exists, that I might model mine after? Or any other tips towards accomplishing this project?

This small thing would be a huge help in my daily workflow -- so I appreciate any assistance you might offer in getting me to my destination.

(I'm open to non-AHK alternatives if anyone has suggestions.)

Thanks in advance.

4

3 回答 3

1

为了完整起见,这里有一个使用 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
于 2011-10-28T09:06:20.470 回答
0

我建议使用名为FreeCommander的 Windows Explorer 替代品。

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

编辑

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

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

在此处输入图像描述

  • 这是你第一次改名
  • 在第二个屏幕截图中,我将下划线替换为空格
  • 请注意,我还选中了“替换所有匹配项”,并将其保存为配置文件

在此处输入图像描述

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

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

(如果这仍然是太多的步骤,你可以随时录制一个 AutoHotKey 宏来替换这些步骤......)

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

例如,过去我大量使用Flash Renamer

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

于 2011-10-27T21:44:04.473 回答
0

另一种选择是使用免费的“批量重命名实用程序”或命令行版本,称为批量重命名命令

于 2011-11-08T10:07:22.783 回答