Skif_off
|
Posted: Tue Apr 08, 2014 22:56 Post subject: |
|
|
К сожалению, я не кот
Голову было нечем занять, а надо было и
вот что получилось из любопытства
кнопка
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AutoIt.exe %COMMANDER_PATH%\UTILITIES\MAFF.au3
"%P%N" "%P"
AutoIt3_v10.ico
MAFF
%COMMANDER_PATH%\UTILITIES\
-1 |
Второй параметр %P для того, чтобы не искать путь к файлу *.maff (одна строка + скопипастить функцию, но просто лень)
AutoIt.exe отсюда (можно 3.3.8.1, поменьше чуток).
Скрипт:
Code: | #NoTrayIcon
;Пишем в переменную %COMMANDER_PATH%
$COMMANDER_PATH = EnvGet("COMMANDER_PATH")
;Запускаем 7-zip с командой list и ловим все, что она выдаст
$sOut = ""
$iPID = Run($COMMANDER_PATH & '\PLUGINS\WCX\TOTAL7ZIP\7Z.EXE l "' & $CmdLine[1] & '"', $COMMANDER_PATH & '\PLUGINS\WCX\TOTAL7ZIP', @SW_HIDE, 2)
While 1
$sOut &= StdoutRead($iPID)
If @error Then ExitLoop
WEnd
;Проверяем конец строки - DOS/Unix/Mac
Select
Case StringInStr($sOut, @CRLF) > 0
$sDelimiter = @CRLF
Case StringInStr($sOut, @LF) > 0
$sDelimiter = @LF
Case Else
$sDelimiter = @CR
EndSelect
;и разбиваем на строки, в качестве разделителя - конец строки
$aLines = StringSplit($sOut, $sDelimiter, 1)
;Рег. выражением находим имя каталога в *.maff (это точно всегда будет 13я строка вывода?)
$MaffPath = StringRegExpReplace($aLines[13], '(\d{4}.*?\s+0\s+0\s+)([a-z0-9_]+)', '\2')
;Распаковываем *.maff в %Temp%
RunWait($COMMANDER_PATH & '\PLUGINS\WCX\TOTAL7ZIP\7Z.EXE x "' & $CmdLine[1] & '" -o"' & @TempDir & '" -aoa', $COMMANDER_PATH & '\PLUGINS\WCX\TOTAL7ZIP', @SW_HIDE)
;Ищем окно ТС
$hWnd = WinWait("[CLASS:TTOTAL_CMD]", "", 3)
;Делаем активным на всякий случай и
WinActivate($hWnd)
;с помощью TCFS2 посылаем команду открыть в активной панели каталог с распакованным *.maff
RunWait($COMMANDER_PATH & '\UTILITIES\TCFS2\TCFS2.EXE /ef "tem(`em_CD ' & @TempDir & '\' & $MaffPath & '\`)"', $COMMANDER_PATH & '\UTILITIES\TCFS2', @SW_HIDE)
;Ждем появления окна листера
$hWndL = WinWait("[Class:TLister]", "")
;и после ждем его закрытия
While WinExists("[Class:TLister]")
Sleep(500)
WEnd
;Ищем окно ТС
$hWnd = WinWait("[CLASS:TTOTAL_CMD]", "", 3)
;Делаем активным на всякий случай и
WinActivate($hWnd)
;с помощью TCFS2 посылаем команду вернуться в каталог с *.maff
RunWait($COMMANDER_PATH & '\UTILITIES\TCFS2\TCFS2.EXE /ef "tem(`em_CD ' & $CmdLine[2] & '\`)"', $COMMANDER_PATH & '\UTILITIES\TCFS2', @SW_HIDE)
;Грохаем папку с распакованным *.maff
If FileExists(@TempDir & '\' & $MaffPath) Then DirRemove(@TempDir & '\' & $MaffPath, 1)
|
Из комментариев вроде все понятно, нужна утилита TCFS2 и пользовательская команда
Code: | [em_CD]
cmd=CD
param=%A
menu=Переход |
Открыть в неактивной панели у меня не получилось.
|
|