2016-06-01 8 views
0

1. Я в определенной папке под названием «2», где разные типы файлов и путь выглядит следующим образом:AutoHotkey - Zip называется как часть пути

«C: \ Users \ Me \ Desktop \ Named_Folder \ 1 \ 2"

Я хочу поставить все эти файлы там в Zip и как скрипт должен выглядеть так, в конце концов Zip будет называться „Named_Folder“, так же, как папка в пути? Необходимо упомянуть, что имя «Named_Folder» будет иметь разное имя. Итак, как назвать zip как два каталога выше.

2. До сих пор я только что нашел сценарий, чтобы поместить все эти файлы в zip:

#IfWinActive ahk_class CabinetWClass 
    Send ^a     ; Select All 
    Send, {AppsKey}   ; Press the "context menu" key 
    Sleep 100 
    Send n    ; Select "Send to" with the "n" key 
    Sleep 100 
    Send {Right}   ; Open "Sent to" with the "right arrow" key 
    Sleep 100 
    Send {Down}    ; Select "Compressed (zipped) folder" with the "arrow down" key 
    Sleep 100 
    Send {Enter}   ; Execute "Compressed (zipped) folder" with the "Enter" key 
    return 

И как скрипт должен выглядеть объединить 1. и 2 . уровень? С одним ярлыком.

Таким образом, в конце концов, результат должен выглядеть следующим образом:

Example

3. А потом я хотел бы объединить ниже двух сценариев (F2 F3 или даже F1, если он изменяет что-нибудь) с одна буквы ярлыка (4 первых строки из АКА файла по умолчанию):

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. 
; #Warn ; Enable warnings to assist with detecting common errors. 
SendMode Input ; Recommended for new scripts due to its superior speed and reliability. 
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. 


#If WinActive("ahk_class CabinetWClass") ; explorer 

F1:: 
for window in ComObjCreate("Shell.Application").Windows 
try Fullpath := % window.Document.Folder.Self.Path 
; IfExist, %Fullpath%\1\ 
    Run, %Fullpath%\2 
return 

F2:: 
for window in ComObjCreate("Shell.Application").Windows 
try Fullpath := % window.Document.Folder.Self.Path 
; IfExist, %Fullpath%\1\2\ 
    Run, %Fullpath%\1\2 
return 

#If 


#IfWinActive ahk_class CabinetWClass 

F3:: 
for window in ComObjCreate("Shell.Application").Windows 
try Fullpath := % window.Document.Folder.Self.Path 
if (SubStr(Fullpath, -3) = "\1\2") 
{ 
StringReplace, Fullpath, Fullpath, :, 
StringTrimRight, Fullpath, Fullpath, 4 
StringSplit, folder_array, Fullpath, \, 
MsgBox, % folder_array%folder_array0% 
    Send ^a     ; Select All 
    Send, {AppsKey}   ; Press the "context menu" key 
    Sleep 100 
    Send n    ; Select "Send to" with the "n" key 
    Sleep 100 
    Send {Right}   ; Open "Sent to" with the "right arrow" key 
    Sleep 100 
    Send {Down}    ; Select "Compressed (zipped) folder" with the "arrow down" key 
    Sleep 100 
    Send {Enter}   ; Execute "Compressed (zipped) folder" with the  "Enter" key 
     Sleep 2000  ; wait 2 seconds 
     SendInput, % folder_array%folder_array0% 
} 
return 

#IfWinActive 

4. А затем извлечь почтовый индекс (правая кнопка мыши -> контекстное меню -> Ext RACT в «папку с таким же именем, как молния»

Context menu entry example

Так что создает папку с именем «NAMED_FOLDER» со всем добытым содержанием. Я знаю, что когда я выбираю zip и нажимаю правую кнопку мыши (чтобы открыть контекстное меню) и нажмите букву «e», он работает.

5. Затем переместите этот почтовый индекс и эти новые Извлеченные папки на рабочий стол в папке «FINAL»

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

+0

Там нет необходимости, чтобы неудобства себя с пользовательским интерфейсом, с помощью командной строки вместо. – 2501

+0

Я не уверен, что именно вы спрашиваете. У вас возникли проблемы с кодом, который вы показали? – 2501

+0

Nop, код в 2. шаге работает просто отлично. Я прошу, чтобы все эти файлы в папке «2» были заархивированы с тем же именем (автоматически) в виде двух папок вверх - «Named_Folder». Потому что это много времени и больно, чтобы сделать это 100 раз, иногда путем копирования-вставки «Named_Folder» в этот вновь созданный ZIP. – Curioucity

ответ

0
#IfWinActive ahk_class CabinetWClass 

F4:: 
for window in ComObjCreate("Shell.Application").Windows 
try Fullpath := window.Document.Folder.Self.Path 
IfNotExist, %Fullpath%\1\2 
{ 
MsgBox, The folder "%Fullpath%\1\2" doesn't exist 
    return 
} 
Run, %Fullpath%\1\2 
WinWait, %Fullpath%\1\2 
WinActivate, %Fullpath%\1\2 
WinWaitActive,%Fullpath%\1\2 
StringReplace, Fullpath2, Fullpath, :, 
StringSplit, folder_array, Fullpath2, \, 
FolderName = % folder_array%folder_array0% 
; MsgBox, % folder_array%folder_array0% 
FileCopyDir %Fullpath%\1\2, %A_Desktop%\FINAL\%FolderName% 
; Sleep 2000  ; wait 2 seconds 
    Send ^a     ; Select All 
    Send, {AppsKey}   ; Press the "context menu" key 
    Sleep 100 
    Send n    ; Select "Send to" with the "n" key 
    Sleep 100 
    Send {Right}   ; Open "Sent to" with the "right arrow" key 
    Sleep 100 
    Send {Down}    ; Select "Compressed (zipped) folder" with the "arrow down" key 
    Sleep 100 
    Send {Enter}   ; Execute "Compressed (zipped) folder" with the  "Enter" key 
     Sleep 2000  ; wait 2 seconds 
     SendInput, % folder_array%folder_array0% 
     Send {Enter} 
SetTimer, Move_ZIP, 500 
return 

#IfWinActive 

Move_ZIP: 
IfExist, %Fullpath%\1\2\%FolderName%.zip 
{ 
SetTimer, Move_ZIP, off 
FileMove, %Fullpath%\1\2\%FolderName%.zip, %A_Desktop%\FINAL 
} 
return 

или это:

#IfWinActive ahk_class CabinetWClass 

F4:: 
for window in ComObjCreate("Shell.Application").Windows 
try Fullpath := window.Document.Folder.Self.Path 
IfNotExist, %Fullpath%\1\2 
{ 
MsgBox, The folder "%Fullpath%\1\2" doesn't exist 
    return 
} 
Run, %Fullpath%\1\2 
WinWait, %Fullpath%\1\2 
WinActivate, %Fullpath%\1\2 
WinWaitActive,%Fullpath%\1\2 
StringReplace, Fullpath2, Fullpath, :, 
StringSplit, folder_array, Fullpath2, \, 
FolderName = % folder_array%folder_array0% 
; MsgBox, % folder_array%folder_array0% 
; Sleep 2000  ; wait 2 seconds 
    Send ^a     ; Select All 
    Send, {AppsKey}   ; Press the "context menu" key 
    Sleep 100 
    Send n    ; Select "Send to" with the "n" key 
    Sleep 100 
    Send {Right}   ; Open "Sent to" with the "right arrow" key 
    Sleep 100 
    Send {Down}    ; Select "Compressed (zipped) folder" with the "arrow down" key 
    Sleep 100 
    Send {Enter}   ; Execute "Compressed (zipped) folder" with the  "Enter" key 
     Sleep 2000  ; wait 2 seconds 
     SendInput, % folder_array%folder_array0% 
     Send {Enter} 
SetTimer, Move_ZIP, 500 
return 

#IfWinActive 

Move_ZIP: 
FileCreateDir %A_Desktop%\FINAL 
IfExist, %Fullpath%\1\2\%FolderName%.zip 
{ 
SetTimer, Move_ZIP, off 
FileMove, %Fullpath%\1\2\%FolderName%.zip, %A_Desktop%\FINAL 
Sleep 2000  ; wait 2 seconds 
SetTimer, CopyDir, 500 
} 
return 

CopyDir: 
IfExist, %Fullpath%\1\2\%FolderName%.zip 
    return 
SetTimer, CopyDir, off 
FileCopyDir %Fullpath%\1\2, %A_Desktop%\FINAL\%FolderName% 
return 
+0

Это работает почти идеально! Единственное несовершенство заключается в шаге 4. Но я улучшил свой пост для шага 4, чтобы быть более конкретным. Но на самом деле, когда я вижу, как работает ваш скрипт, этот ZIP можно также извлечь в папке «FINAL». – Curioucity

+0

Вам не нужно извлекать ZIP, если вы используете FileCopyDir перед созданием ZIP. Я соответствующим образом отредактировал этот код. – user3419297

+0

Хорошо, это другой способ, но он отлично работает. Хм, теперь есть еще одна проблема: в папке «FINAL» и когда я открываю ZIP и папку, в обоих из них есть Extra zip, который не будет там [ссылка] http://screencast.com/t/mpIRdVU7 – Curioucity