Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: [Util] Пакетная упаковка 
Author Message
_Johm



PostPosted: Wed Dec 17, 2008 10:30    Post subject: Reply with quote

Недавно снова понадобилась эта функция. Обнаружил что бат файл не работает когда папка-источник не совпадает с папкой-целью.
Не стал больше делать это в бат-файле. Написал vbscript
VBS файл и кнопка для Total Commander.
пакетная упаковка папок в zip без сжатия и
без основной папки в создаваемом архиве
с помощью winrar.exe (ключи можно настроить
на свой вкус)
Выделяем файлы/папки в одной панели,
архивация происходит в другую.
Code:

'параметры
rem  %L
rem "%T"
rem (zip|rar) тип архива
rem (0|1|2|3|4|5) степень сжатия (0 - без сжатия)
rem пропускать файлы? (0-no|1-yes) пропускать файлы из выделения,т.е. сжимать только выделенные папки.

Dim fso           : Set fso        = CreateObject("Scripting.FileSystemObject")
Dim WshShell      : Set WshShell   = CreateObject("WScript.Shell")
Dim Resp : Resp = ""
Dim Args : Set Args = WScript.Arguments

Dim TCL : TCL = Split(fso.OpenTextFile(Args(0)).ReadAll, vbNewLine)
Dim Target : Target = Args(1)
Target = Replace(Target, """", "")
Dim TARG : Dim SOURCE
Dim ArcType : ArcType = Args(2)
Dim Compression : Compression = Args(3)
Dim SkipFiles : SkipFiles = Args(4)

Dim CurArc
Dim t
Dim skip
For Each CurArc in TCL
If CurArc = "" Then WScript.Quit
skip = ""
If Right(CurArc,1) = "\" Then
 t = CurArc & "=end="
 TARG = Replace(t, "\=end=", "." & ArcType)
 TARG = Target & fso.GetFileName(TARG)
 SOURCE = Replace(t, "\=end=", "\*")
ElseIf SkipFiles = 0 Then
 t = fso.GetBaseName(CurArc) & "." & ArcType
 TARG = Target & t
 SOURCE = CurArc
Else skip = "=skip="
End If

If Not skip = "=skip=" Then
TARG = """" & TARG & """"
SOURCE = """" & SOURCE & """"
Resp = "%COMMANDER_PATH%\PLUGINS\arc\winrar.exe a -r -ep1 -af" & ArcType & " -m" & Compression & " -ibck " &TARG & " " & SOURCE
'winrar.exe a -r -ep1 -af%3 -m%4 -ibck !target_path! !source_path
WshShell.Run Resp, 10, True
End If
 Next


старый bat-файл
Code:

@echo off
rem Batch packing of albums into ZIP
rem parameters for Total Commander
rem %1 - %F
rem %2 - "%T"
rem %3 - (zip|rar) тип архива
rem %4 - compression (0|1|2|3|4|5) степень сжатия (0 - без сжатия)
rem %5 - miss files? (0-no|1-yes) пропускать файлы из выделения, rem т.е. сжимать только выделенные папки.

set miss_files=%5

chcp 1251 >nul
setlocal  enabledelayedexpansion
for /f "delims=" %%a in (%1) do (
    set target_path=%~2
    set temp_a=%%a
    set whatis_a=!temp_a:~-1!
   
    if !whatis_a!==\ (
      set temp_a=!temp_a:~0,-1!
      echo packing:: !temp_a!.%3
   
      set source_path="%%~fa*"
      set target_path="!target_path!!temp_a!.%3"
     
      %COMMANDER_PATH%\PLUGINS\arc\winrar.exe a -af%3 -r -ep1 -m%4 -ibck !target_path! !source_path!
    )
 
    if !whatis_a! NEQ \ (
      if !miss_files!==0 (
   
        set temp_a=%%~na
        echo file packing:: !temp_a!.%3
   
        set source_path="%%~fa"
        set target_path="!target_path!!temp_a!.%3"

        %COMMANDER_PATH%\PLUGINS\arc\winrar.exe a -af%3 -m%4 -ibck !target_path! !source_path!   
      )
    )   
)
endlocal

pause


Кнопка

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\PROGS\bat\winrar_music_library.bat
%L "%T" zip 0 1
%COMMANDER_PATH%\PROGS\bat\winrar_music_library.bmp
Batch Packing of Albums into ZIP
%COMMANDER_PATH%\PROGS\bat\

-1


поправил бат и кнопку, благодаря Tol!k


Last edited by _Johm on Sun Apr 12, 2009 20:19; edited 3 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group