Как под Win7 получить список содержимого ESD-архива? "Родной" DISM не поддерживает такой формат. Есть замечательная утилита wimlib, но она не понимает русские буквы в тэгах... После вдумчивого гугленья получен VBS-скрипт (назовём его xml_parser.vbs):
Код:
Set oXML = CreateObject("Msxml2.DOMDocument") oXML.Load(WScript.Arguments(0)) Set nodes = oXML.getElementsByTagName(WScript.Arguments(1)) For Each node In nodes WScript.Echo node.text Next
И теперь можно так:
Код:
:: получаем из ESD-архива (%file%) содержимое файла-описания в файл xml wimlib-imagex.exe info "%file%" --extract-xml xml :: получаем список тэгов <NAME> и записываем в файл list.txt в кодировке 1251 (для WSelect) for /f "delims=" %%i in ('cscript.exe //nologo xml_parser.vbs xml NAME') do call :getitem >nul chcp 866 exit :getitem if not defined cp >nul chcp 1251& set cp=1 :: трюк с передачей параметра через внутреннюю переменную; позволяет вывести _любые_ символы, в т.ч. кавычки и спец-символы for %%a in (1) do >>list.txt echo %%i
*Примечание:
работает также с WIM и SWM (всё, что поддерживает wimlib)
вывести можно список любых тэгов, а не только <NAME>
требуется поддержка vbs (применение под WinPE ограничено)
Думаю в пояснении не нуждается. Как использовать: К примеру имеется двухраздельная флэшка или USB-HDD, создаем папку _WIM на любом разделе вашего накопителя, закидываем свои образы (*.wim) в папку _WIM, запускаем батник auto.bat, будет создан файл BCD, запускаем из Grub4Dos-меню из пункта: "Авто-меню запуска образов из папки _WIM" Пример:
Код:
title >>> Авто-меню запуска образов из папки _WIM \n По этому пункту будет создано меню загрузки образов. find --ignore-floppies /_WIM/BOOT/Bootmgr | set p= chainloader %p%/_WIM/BOOT/GRLDR
Ну а дальше все как по шаблону: Вообще вот набор, если кому интересно.
Уважаемые"Гуру" помню где-то видел обсуждали но найти не могу. В шапке есть батник для запуска программы из искомой папки. Код отрабатывает на ура, папку ищет и необходимый exe-ник запускает вот только окно консоли висит пока не закроешь эту программу или саму консоль. Дописывал в конец кода :end, exit ничего не помогает, подскажите пожалуйста, или тыкните носом где обсуждали это !
Интересный способ определить битность файла (exe или dll):
Код:
@echo off for /f "tokens=3" %%a in ('2^>nul 7z.exe l -tpe %1^| find "CPU = "') do ^ if "%%a"=="x86" (echo App is a x86) else if "%%a"=="x64" echo App is a x64
Нужно: - установленный 7z (или прописанный в PATH) - запуск: run.cmd "file_name.exe"
Последний раз редактировалось: Ander_73 (2021-02-13 09:07), всего редактировалось 1 раз
Ковырялся с мини-сборкой Xemom1 и обнаружил, что он использует BCD из прошлых своих сборок с массой лишних пунктов меню. Поэкспериментировал с созданием BCD "с нуля" для запуска одиночного WIM-файла из произвольной папки. Вот, что у меня получилось:
Ключ testsigning - опциональный (Xemom1 его использует у себя, значит, пусть будет). Для модификации "под себя", путь \PE10 заменить на свой (не забыть про папку для ключа fontpath и имя самого WIM-файла). *Примечание: сборка BCD производилась под Win10.
loban_ser, и таки временные файлы надо создавать в %tmp%, кмк. Да и просто он не нужен
Код:
for /f "delims=" %%a in ( 'mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"' ) do echo %%a
И с find можно красиво через &&, а не проверять ерролевел. И md сразу фигачить через 2>nul, а не проверять наличие. Ворчу...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы