2016-04-27 2 views
1

Я ищу простой код AutoHotkey для преобразования точки "." имени файла в пробе. Пример Hamburger.Hill.1987.BluRay.720p.x264 необходимо преобразовать в Hamburger Hill 1987 BluRay 720p x264.Autohotkey для преобразования точки "." в космос

Начало шпагатом: Hamburger.Hill.1987.BluRay.720p.x264.mov

Строка результата: Hamburger Hill 1987 BluRay 720p x264.mov

Обратите внимание на точку перед расширением должен быть сохранен.

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

Начало шпагатом: Hamburger Hill 1987 BluRay 720p x264.mov

Строка результата: Hamburger Hill 1987.mov

Вот мой код

#.:: ; Replace all "." (except before extension) with spaces 
OldCLip := ClipboardAll 
Clipboard := "" 
Send ^c 
ClipWait, .2 
; MsgBox % Clipboard ; for testing 

if Clipboard FileMove, % Clipboard, % RegExReplace(Clipboard, "\.(?=.*?\.[^.]+$)", " ") 
Clipboard := OldClip 
return 

Я посмотрел тщательно, но не мог видеть код, связанный с этим. Заранее спасибо за вашу помощь.

+1

https://autohotkey.com/docs/commands/StringReplace.htm – Blauhirn

+0

[Это] (https://regex101.com/r/yP4bY4/1) может помочь вам очистить названия. – Tushar

ответ

0

В AutoHotKey вы бы использовать что-то вроде этого:

; set the value 
String := "Hamburger.Hill.1987.BluRay.720p.x264.mov" 

; capture the extension 
RegexMatch(String, "(.*)(\.[^.]*?$)", SubPart) 
Filename := SubPart1 
Extension := SubPart2 

; replace all the dots with spaces 
Output1 := RegexReplace(Filename, "\.", " ") 

; remove the unwanted characters after the year 
Output2 := RegexReplace(Output1, "(?<=\d{4}).*", "") 

strMessage := "" 
, strMessage .= "String = '" . String . "' 
, strMessage .= "`nOutput1 = '" . Output1 . Extension "' 
, strMessage .= "`nOutput2 = '" . Output2 . Extension "' 
MsgBox, % strMessage 

Пример вывода

String = 'Hamburger.Hill.1987.BluRay.720p.x264.mov' 
Output1 = 'Hamburger Hill 1987 BluRay 720p x264.mov' 
Output2 = 'Hamburger Hill 1987.mov' 

Как бы включить это в сценарий.

#.:: ; Replace all "." (except before extension) with spaces 
OldCLip := ClipboardAll 
Clipboard= 
Send ^c 
ClipWait 
; MsgBox % Clipboard ; for testing 

; set the value 
String := Clipboard 
; String := "Hamburger.Hill.1987.BluRay.720p.x264.mov" 

; capture the extension 
RegexMatch(String, "(.*)(\.[^.]*?$)", SubPart) 
Filename := SubPart1 
Extension := SubPart2 

; replace all the dots with spaces 
Output1 := RegexReplace(Filename, "\.", " ") 

; remove the unwanted characters after the year 
Output2 := RegexReplace(Output1, "(?<=\d{4}).*", "") 

; strMessage := "" 
; , strMessage .= "String = '" . String . "' 
; , strMessage .= "`nOutput1 = '" . Output1 . Extension "' 
; , strMessage .= "`nOutput2 = '" . Output2 . Extension "' 
; MsgBox, % strMessage 

if (String) { 
    strMessage := "Renaming '" . Output1 . Extension . "' to '" . Output2 . Extension . "'" 
    MsgBox, % strMessage 
    FileMove, % Output1 . Extension, % Output2 . Extension 
    } ; end if 

Clipboard := OldClip 
return 
+0

Спасибо за ваши усилия. Он также удаляет «.». перед расширением. Есть ли способ исключить "." перед расширением? Спасибо, в любом случае. – Rhinemine

+0

@Rhinemine см. Обновленный ответ. –

+0

@Thanks Denomales. Теперь работает. Просто интересно, можно ли еще обрезать все после четырехзначного года (например, Hamburger Hill 1987) и обрезать BluRay 720p.x264? Еще раз спасибо за ваше время и помощь. – Rhinemine

Смежные вопросы