Может ли AutoHotKey создать переименовывающую капельку? - PullRequest
0 голосов
/ 27 октября 2011

Я канцелярский помощник. Когда файлы экспортируются из нашей системы управления документами, они поступают так:

BIGNAME- # 9999999-This_Is_The-File_Name_Right_Here.doc

Я бы хотел в основном создать дроплет AutoHotKey, который отсекает BIGNAME и число, а затем преобразует все подчеркивания в тире, создавая конечный результат:

Это имя файла прямо здесь.doc

К сожалению, я все еще немного новичок, когда дело доходит до AutoHotKey, и я даже не уверен, с чего начать.

Кто-нибудь знает, если сценарий, который сильно переименовывается с использованием AutoHotKey, уже существует, что я мог бы смоделировать мой после? Или какие-либо другие советы по выполнению этого проекта?

Эта мелочь очень помогла бы мне в повседневной работе - поэтому я ценю любую помощь, которую вы можете предложить, чтобы доставить меня к месту назначения.

(Я открыт для не-AHK альтернатив, если у кого-то есть предложения.)

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 28 октября 2011

Просто для полноты вот скрипт, который решает проблему с помощью 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
0 голосов
/ 08 ноября 2011

Другой вариант - использовать бесплатную утилиту Bulk Rename или версию командной строки, которая называется Команда Bulk Rename .

.
0 голосов
/ 28 октября 2011

Я рекомендую использовать альтернативу Windows Explorer под названием FreeCommander .

Помимо удобного просмотра двух папок рядом, он имеет гибкую функцию переименования.

Редактировать

Итак, вот как это работает (это намного проще, чем этот подробный список делает это звучит - правда!)

  • После выбора файла или файлов нажмите «Файл» -> «Переименовать». Сокращение - Ctrl + M .
  • Вы получите следующий диалог
  • В нижней части экрана находится текст, который вы хотите удалить, и то, чем вы хотите заменить его.
  • Это создает некое правило или шаблон
  • Обратите внимание, что вы можете сохранить каждое из этих правил в качестве профиля для повторного использования
  • В верхней части диалогового окна отображается для каждого выбранного файла оригинальное имя и новый
  • Вы также должны отключить «Закрыть диалоговое окно после переименования» - я забыл об этом, когда делал скриншоты
  • (Очевидно) Нажмите на Переименовать

enter image description here

  • Это ваше первое переименование сделано
  • На втором снимке экрана я заменил подчеркивание пробелами
  • Обратите внимание, что я также проверил «Заменить все вхождения» и сохранил это как профиль

enter image description here

Теперь файл переименован, как вы хотели. (Если вы действительно хотите избавиться от дефиса, вы тоже можете это сделать)

Это рецепт настроен. В будущем вы можете выбрать любое количество файлов и выполнить пакетное переименование, а затем применить каждый из этих двух профилей для переименования всех ваших файлов всего за несколько шагов.

(И если бы это было слишком много шагов, вы всегда могли бы записать макрос AutoHotKey, чтобы заменить эти шаги ...)

Если все, что вы хотите сделать, это переименовать много файлов, есть много специальных инструментов, которые могут быть слишком сложными.

Например, в прошлом я интенсивно использовал Flash Renamer

Но что мне нравится в FreeCommander, так это то, что он имеет так много других действительно полезных функций (таких как быстрая фильтрация, чтобы показывать только файлы с определенным текстом в их именах), что это экономит мне огромное количество времени. 1063 *

...