Упаковка выделенного в ISO-образ

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

BezDNaU
Сообщения: 65
Зарегистрирован: Сб май 31, 2008 10:56

Сообщение BezDNaU »

Можно с помощью ImgBurn.
Вот кнопка

Код: Выделить всё

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Utils\ImgBurn\ImgBurn.exe"
/MODE BUILD /FILESYSTEM "ISO9660 + Joliet" /BUILDMODE IMAGEFILE /VOLUMELABEL "ObRaZ" /VERIFY /NOSAVESETTINGS /SRCLIST "%L" /DEST "%Tdisk.iso" /START /CLOSESUCCESS
%COMMANDER_PATH%\Utils\ImgBurn\ImgBurn.exe,1
Записать выделенное
%COMMANDER_PATH%\Utils\ImgBurn\

-1
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Пусть, конечно, ещё один вариант будет, но в 10 раз превышающий установочный дистрибутив против маленькой портабельной консольной однофайловой тулзы, в которой и скорость записи куда побыстрее и нет лишних громоздких окон, окна подтверждения и можно вводить имя нового образа (скрипт), а не лезть в параметры кнопки, как-то не катит.
Тут, кстати, ещё пару ключей не помешало бы: /PORTABLE /LANGID 2057
Но есть один у неё небольшой плюс - можно записывать в UDF.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Кстати, был ещё пример для UltraISO.

Сделал некоторые правки в скрипте по совету Batya. Также сделал грамотную обрезку длинных имён файлов.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Увеличил до 103 символов, в подавляющем большинстве случаев должно хватать.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Предлагаемый вариант:

Код: Выделить всё

'================================================================================================
' Создать для каждого выбранного каталога свой ISO-образ (файловая система: UDF)
' Параметры: %WL "<путь получателя>" <мин. остаток свободного места на диске в Мб после упаковки>
' Пример:    %WL "%T" 250
'===================================== Путь к утилите OSCDIMG ===================================
Util = """%COMMANDER_PATH%\Utils\ISO\oscdimg.exe"""
'================================================================================================
With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  List = .Item(0) : Path = .Item(1) : Min = .Item(2)
End With
If Right(Path, 1) <> "\" Then Path = Path & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
Drive = FSO.GetDriveName(Path) : Free = FSO.GetDrive(Drive).AvailableSpace
L = vbNewLine : Set Dict = CreateObject("Scripting.Dictionary")
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, L)
  If F <> "" Then
    If FSO.FolderExists(F) Then Size = Size + FSO.GetFolder(F).Size : Dict.Add F, "" : End If
  End If
Next : Res = Abs((Size - Free)/1024) : Title = "Создание ISO-образов"
If Size > Free Then
  If Res > 1023 Then Res = Fix(Res/1024) & " Мб" Else Res = Fix(Res) & " Кб"
  WSH.Popup "Требуется дополнительно " & Res & " свободного места на диске " &_
  Drive & " !", 4, Space(30) & "Остановка (""" & Title & """)", 48 : Quit
ElseIf Res/1024 < Min Then
  Mess = MsgBox("После создания образов на диске останется" & L & "чуть менее " &_
  Int(Res/1024) & " Мб !" & L & L & "Всё равно продолжить?", 4132, Space(24) & Title)
  If Mess <> 6 Then Quit
End If
For Each F in Dict.Keys
  WSH.Run Util & " -h -u2efv -x -o -k -m """ & Left(F, Len(F) - 1) &_
  """ """ & Path & FSO.GetBaseName(F) & ".iso""", 0, True
Next : WSH.Popup "Образы созданы!", 4, "     " & Title, 64 : Quit
Sub Quit : Set FSO = Nothing : Set WSH = Nothing : Set Dict = Nothing : WScript.Quit : End Sub
OSDIMG
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
addhaloka
Сообщения: 169
Зарегистрирован: Вт ноя 09, 2010 16:09

Сообщение addhaloka »

Flasher писал(а):Сделал некоторые правки в скрипте по совету Batya. Также сделал грамотную обрезку длинных имён файлов.
Что-то то работает, то нет.[cut]Кнопка такая:

Код: Выделить всё

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Bin\UltraISO\createiso_mkisofs.vbs"
%L "%T"
%COMMANDER_PATH%\Icons\TCMICONS.DLL,88
Упаковать выделенные файлы и папки в ISO-образ (mkisofs)


-1
Вроде бы вообще работает, если только паковать файлы из расположения скрипта, из других мест не хочет. Попробовал сделать так, в createiso_mkisofs.vbs:

Код: Выделить всё

...
MKISO = """%COMMANDER_PATH%\Bin\UltraISO\mkisofs.exe"""
...
With CreateObject("WScript.Shell")
  .Run MKISO & " -quiet -r -f -joliet-long -nobak -graft-points -o " & Str, 0, True
  .Popup "Образ создан!", 1, "Результат", 64
End With
Так пакует и из других мест, но только файлы (оригинальный тоже папки не может). Возможно, дело в версии (или кривой сборке) mkisofs? :?
Брал отсюда: https://sourceforge.net/projects/tumagcc/files/ (сборки без использования cygwin)[/cut]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

addhaloka
См. на TCKB ссылку.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
addhaloka
Сообщения: 169
Зарегистрирован: Вт ноя 09, 2010 16:09

Сообщение addhaloka »

Flasher
Спасибо, с mkisofs оттуда нормально работает и скрипт там поновей. :)

p.s. Те mkisofs 3.x, что у меня были, похоже совсем кривые - помимо неработы с папками, там ещё и с кириллицей проблемы.
bbcby
Сообщения: 58
Зарегистрирован: Вс мар 05, 2006 17:50

Сообщение bbcby »

Добрый день. Создание ISO DVD-Video через oscdimg.
Тут был скрипт vbs, конечно, но мне хотелось бы видеть окно консоли с процессом выполнения.
Надо выделенные папки, каждая в свою ISO в противоположную панель. Volume label должна браться из имени папки, названия папок могут быть с пробелами.
Пытаюсь сделать кнопку, но что не получается. Создается файл с именем .iso и метка тома прописывается неверно.

Код: Выделить всё

TOTALCMD#BAR#DATA
%ComSpec% /k echo off & for /f "delims=" %i in
('type %WF') do oscdimg -l%%~n -uv -u1 %%i %T%%~ni.iso
shell32.dll,151
DVD Video


-1
Нужен формат ISO именно DVD-Video, параметров -uv -u1 вроде достаточно?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

bbcby писал(а):Тут был скрипт vbs, конечно, но мне хотелось бы видеть окно консоли с процессом выполнения.
Он не был, он есть. Выше перед глазами. 3 строка снизу — 0 заменить на 1.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
bbcby
Сообщения: 58
Зарегистрирован: Вс мар 05, 2006 17:50

Сообщение bbcby »

Оказалось все просто, спасибо.
А можно вариант без проверки свободного места.
И метка тома там DVD-ROM прописывается, а не берется из имени папки.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А смысл варианта без проверки? Это же весьма полезная опция. И можно хоть 0 написать, если угодно.

По метке 4 строка снизу:
WSH.Run Util & " -h -u2efv -x -o -k -l""" & FSO.GetFileName(F) & """ -m """ & Left(F, Len(F) - 1) &_
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
bbcby
Сообщения: 58
Зарегистрирован: Вс мар 05, 2006 17:50

Сообщение bbcby »

Спасибо.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Цель - упаковать выделенные файлы и каталоги (в том числе с именами в Unicode) в единый ISO-файл.
С этим может справиться какая-нибудь маленькая консольная бесплатная утилитка или минимальный вариант - ImgBurn?
Что-то ничего более действенного не находится... даже такая бы казалось "эталонная" утилита для работы с ISO-файлами как UltraISO - и та не переваривает Unicode.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD
Вообще mkisofs с параметрами -r -joliet должна работать с Unicode. Почему это не происходит с версией с TCKB, ответить затрудняюсь. Попробуй другие версии.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить