Создание ISO-образов из выбранного
Q: Периодически требуется из выбранных в панели элементов создавать образы для последующей записи
на CD/DVD/Blue-Ray-диски или для возможности их подключения в качестве виртуальных дисков.
на CD/DVD/Blue-Ray-диски или для возможности их подключения в качестве виртуальных дисков.
A: Представляю vbs-скрипт с использованием утилиты mkisofs:
'==================================================
' Упаковать выбранные папки и/или файлы в ISO-образ
' Параметры: %WL "<Путь_назначения>\"
' Пример: %WL "%T"
' Автор - Flasher ©
'================= Путь к утилите =================
Util = """%COMMANDER_PATH%\Utils\ISO\mkisofs.exe"""
'==================================================
Name = InputBox(String(5, vbLf) & "Введите имя ISO-файла:",_
" Создание образа ISO из выделенного списка")
If Len(Name) = 0 Then WScript.Quit
With CreateObject("Scripting.FileSystemObject")
Set List = .OpenTextFile(WScript.Arguments(0),,,-1)
Do Until List.AtEndOfStream
F = Trim(List.ReadLine)
If F <> "" Then
If .FolderExists(F) Then Str = Str & " """ & .GetFolder(F).Name & """=""" & F & """"
If .FileExists(F) And Len(.GetFileName(F)) <= 103 Then Str = Str & " """ & F & """"
If .FileExists(F) And Len(.GetFileName(F)) > 103 Then Str = Str & " """ &_
Left(.GetBaseName(F), Len(.GetBaseName(F)) + 103 - Len(.GetFileName(F))) &_
"." & .GetExtensionName(F) & """=""" & F & """"
End If
Loop
End With : Str = Replace("""" & Wscript.Arguments(1) & Name & ".iso"" " & Str, "\", "/")
With CreateObject("WScript.Shell")
.Run Util & " -quiet -r -l -f -joliet-long -udf -nobak -graft-points -o " & Str, 0, True
.Popup "Образ создан!", 1.4, Space(14) & "Результат", 64
End With
A: Другое удобное решение связано с созданием образов для содержимого
каждого выбранного каталога с использование утилиты OSDIMG:
каждого выбранного каталога с использование утилиты OSDIMG:
'================================================================================================
' Создать для каждого выбранного каталога свой ISO-образ (файловая система: UDF)
' Параметры: %WL "<путь получателя>" <мин. остаток свободного места на диске в Мб после упаковки>
' Пример: %WL "%T" 250
' Автор - Flasher ©
'===================================== Путь к утилите 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
Flasher
13.12.2014