| 
    
	
		
		
			| 
			
						
							
								nikzzzz
								
						
							
				Стаж: 10 летСообщений: 3114Репутация:127[+]   [-] | 
			
				
				Ander_73Ждет,  результат можно проверить по %errorlevel% .
 |  
	
		
		
			| 
			
						
							
								Ander_73
								
						
							
				Стаж: 8 лет 8 месяцевСообщений: 4124Репутация:127[+]   [-] | 
			
				
				Как под 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%) содержимое файла-описания в файл xmlwimlib-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 ограничено)
 |  
	
								![Ответить с цитатой [Цитировать]](./styles/templates/default/images/lang/ru/icon_quote.gif)  
		 		Отправлено: 13-Июл-2019 17:10
					(спустя 1 месяц 15 дней)
	
		
		
			| 
			
						
							
								MinskHard
								
						
							
				Стаж: 8 лет 2 месяцаСообщений: 7Репутация:-1[+]   [-] | 
			
				
				Уважаемые"Гуру"  помню где-то видел обсуждали но найти не могу. В шапке есть батник для запуска программы из искомой папки. Код отрабатывает на ура, папку ищет и необходимый exe-ник запускает вот только окно консоли висит пока не закроешь эту программу или саму консоль.Дописывал в конец кода :end, exit ничего не помогает, подскажите пожалуйста, или тыкните носом где обсуждали это !
 |  
	
		
		
			| 
			
						
							
								vovan1982
								
						
							
				Стаж: 10 летСообщений: 1171Репутация:80[+]   [-]Откуда: Ростов-на-Дону | 
			
				
				MinskHard, так вы параметр /w (ждать завершения выполнения) уберитеНужно такstart /w %PUH%\wind\setup64.cmdstart %PUH%\wind\setup64.cmd 
 Последний раз редактировалось: vovan1982 (2019-07-13 22:52), всего редактировалось 1 раз
 |  
	
		
		
			| 
			
						
							
								MinskHard
								
						
							
				Стаж: 8 лет 2 месяцаСообщений: 7Репутация:-1[+]   [-] | 
			
				
				Огромное спасибо, всё получилось !
								
							 |  
	
								![Ответить с цитатой [Цитировать]](./styles/templates/default/images/lang/ru/icon_quote.gif)  
		 		Отправлено: 12-Фев-2021 15:48
					(спустя 1 год 6 месяцев)
	
		
		
			| 
			
						
							
								Ander_73
								
						
							
				Стаж: 8 лет 8 месяцевСообщений: 4124Репутация:127[+]   [-] | 
			
				
				Интересный способ определить битность файла (exe или dll):@echo offfor /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 раз
 |  
	
								![Ответить с цитатой [Цитировать]](./styles/templates/default/images/lang/ru/icon_quote.gif)  
		 		Отправлено: 12-Фев-2021 17:50
					(спустя 2 часа 2 минуты)
	
		
		
			| 
			
						
							
								UserX
								
						
							
				Стаж: 10 летСообщений: 864Репутация:43[+]   [-] | 
			
				
				Чисто теоретически этот код допускает не увидеть никакого из двух сообщений - "App is a x86" или "App is a x64".83262Интересный способ определить битность файла (exe или dll):Такое возможно практически?
 |  
	
		
		
			| 
			
						
							
								Ander_73
								
						
							
				Стаж: 8 лет 8 месяцевСообщений: 4124Репутация:127[+]   [-] | 
			
				
				UserX,  только сейчас заметил, что да    Если подсунуть батнику sfx-архив самого 7z. Обойти легко: добавить ключ -tpe
 |  
	
								![Ответить с цитатой [Цитировать]](./styles/templates/default/images/lang/ru/icon_quote.gif)  
		 		Отправлено: 18-Дек-2021 09:41
					(спустя 3 месяца 9 дней)
	
		
		
			| 
			
						
							
								loban_ser
								
						
							
				Стаж: 7 лет 8 месяцевСообщений: 577Репутация:24[+]   [-] | 
			
				
				Нужно было как-то получить доступ к ветке реестра, написал батничек для смены владельца и получения прав для Администраторы / Пользователи / SystemНу и восстановление правreg_acces.bat@Echo offfor /f "tokens=3" %%a in (
 '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP'
 ) do >nul 2>&1 chcp %%a
 cd /d %~dp0
 @(mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"& echo.)>>"out.txt"
 for /f "tokens=1 delims=" %%a in (out.txt) do set "f=%%a"
 del /q /f "out.txt"
 set "reg=%f:~-3%"
 If Not Exist "%APPDATA%\Repozitory" md "%APPDATA%\Repozitory"
 rem Создание резервной копии прав на раздел
 SetACL.exe -on "%f%" -ignoreerr -ot reg -actn list -lst "w:o,d,s,g;f:sddl" -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj
 rem Смена владельца раздела
 rem Получение прав полного доступа для текущего пользователя
 SetACL.exe -on "%f%" -ignoreerr -ot reg -actn setowner -ownr "n:S-1-5-32-544" -actn ace -ace "n:S-1-5-32-545;p:full" -ace "n:S-1-5-18;p:full" -rec cont_obj -actn clear -clr "dacl,sacl" -actn rstchldrn -rst "dacl,sacl" |find /i "SetACL finished successfully."
 If %errorlevel% LSS 1 (
 %windir%\system32\cAu3.exe "MsgBox('64','Внимание!','Полными владельцами:' & @CRLF & '%f%' & @CRLF & 'установлены:  Администраторы / Пользователи / System',10)"
 )
 Exit
требует дополнительных утилит SetACL и cAu3-консольный autoitRestore_reg_acces.bat@Echo offfor /f "tokens=3" %%a in (
 '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP'
 ) do >nul 2>&1 chcp %%a
 cd /d "%~dp0"
 @(mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"& echo.)>>"out.txt"
 for /f "tokens=1 delims=" %%a in (out.txt) do set "f=%%a"
 del /q /f "out.txt"
 set "reg=%f:~-3%"
 If Exist "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" (
 rem Восстановление владельца и прав из резервной копии
 SetACL.exe -on "%f%" -ignoreerr -ot reg -actn restore -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj -silent
 SetACL.exe -on "%f%" -ot reg -actn setprot -op dacl:np -silent
 SetACL.exe -on "%f%" -ot reg -actn clear -clr dacl,sacl -silent
 If %errorlevel% LSS 1 (
 %windir%\system32\cAu3.exe "MsgBox('64','Внимание!','Права на куст:' & @CRLF & '%f%' & @CRLF & 'Восстановлены!',10)"
 del /q /f "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp"
 )
 )
 Exit /B
добавил в контекстное меню
 
  regWindows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\reg_owner]
 "SubCommands"="reg_owner_act;reg_owner_rest"
 "MUIVerb"="Права ветки реестра"
 "Icon"="Regedit.exe,-0"
 "Position"="1"
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_act]
 @="Смена владельца раздела"
 "HasLUAShield"=""
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_act\command]
 @="mshta.exe vbscript:close(CreateObject(\"Shell.Application\").ShellExecute(\"cmd\",\"/c C:\\Windows\\System32\\reg_acces.bat\",\"\",\"runas\",0))"
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_rest]
 @="Восстановление владельца и прав из резервной копии"
 "HasLUAShield"=""
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_rest\command]
 @="mshta.exe vbscript:close(CreateObject(\"Shell.Application\").ShellExecute(\"cmd\",\"/c C:\\Windows\\System32\\Restore_reg_acces.bat\",\"\",\"runas\",0))"
 |  
	
		
		
			| 
			
						
							
								Ander_73
								
						
							
				Стаж: 8 лет 8 месяцевСообщений: 4124Репутация:127[+]   [-] | 
			
				
				loban_ser, зачем нужен cAu3? Используй тот же VBS. Всего-то надо вывести одно инфо-окно.
								
							 |  
	
		
		
			| 
			
						
							
								loban_ser
								
						
							
				Стаж: 7 лет 8 месяцевСообщений: 577Репутация:24[+]   [-] | 
			
				
				Ander_73,Я привык уже к нему, он "облегчает жизнь"
 функционал расширен чем у cmd, по этому и пользую, а так-то конечно можно
 mshta vbscript:close(CreateObject("wscript.shell").Popup("test"^&vbCrLf^&"test",,"test",^&H20))mshta vbscript:close(CreateObject("wscript.shell").Popup("Полными владельцами:"^&vbCrLf^&"%f%"^&vbCrLf^&"установлены:  Администраторы / Пользователи / System",,"Внимание!",64))
 mshta vbscript:close(CreateObject("wscript.shell").Popup("Права на куст:"^&vbCrLf^&"%f%"^&vbCrLf^&"Восстановлены!",,"Внимание!",64))
 
 Последний раз редактировалось: loban_ser (2021-12-18 11:04), всего редактировалось 3 раз(а)
 |  
	
		
		
			| 
			
						
							
								loban_ser
								
						
							
				Стаж: 7 лет 8 месяцевСообщений: 577Репутация:24[+]   [-] | 
			
				
				@Echo offfor /f "tokens=3" %%a in (
 '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP'
 ) do >nul 2>&1 chcp %%a
 cd /d %~dp0
 for /f "delims=" %%a in (
 'mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"'
 ) do set "f=%%a"
 set "reg=%f:~-3%"
 2>nul md "%APPDATA%\Repozitory"
 rem Создание резервной копии прав на раздел
 SetACL.exe -on "%f%" -ignoreerr -ot reg -actn list -lst "w:o,d,s,g;f:sddl" -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj
 rem Смена владельца раздела
 rem Получение прав полного доступа для текущего пользователя
 SetACL.exe -on "%f%" -ignoreerr -ot reg -actn setowner -ownr "n:S-1-5-32-544" -actn ace -ace "n:S-1-5-32-545;p:full" -ace "n:S-1-5-18;p:full" -rec cont_obj -actn clear -clr "dacl,sacl" -actn rstchldrn -rst "dacl,sacl" |find /i "SetACL finished successfully." && mshta vbscript:close(CreateObject("wscript.shell").Popup("Полными владельцами:"^&vbCrLf^&"%f%"^&vbCrLf^&"установлены:  Администраторы / Пользователи / System",,"Внимание!",64))
 Exit
@Echo offfor /f "tokens=3" %%a in (
 '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP'
 ) do >nul 2>&1 chcp %%a
 cd /d "%~dp0"
 for /f "delims=" %%a in (
 'mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"'
 ) do set "f=%%a"
 set "reg=%f:~-3%"
 If Exist "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" (
 rem Восстановление владельца и прав из резервной копии
 SetACL.exe -on "%f%" -ignoreerr -ot reg -actn restore -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj -silent
 SetACL.exe -on "%f%" -ot reg -actn setprot -op dacl:np -silent
 SetACL.exe -on "%f%" -ot reg -actn clear -clr dacl,sacl |find /i "SetACL finished successfully." && mshta vbscript:close^(CreateObject^("wscript.shell"^).Popup^("Права на куст:"^&vbCrLf^&"%f%"^&vbCrLf^&"Восстановлены!",,"Внимание!",64^)^)
 del /q /f "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp"
 )
 Exit
 |  Страница 6 из 8 
	
	
		Текущее время: 01-Ноя 01:16 Часовой пояс: UTC + 3  
	| 
		
		Вы не можете начинать темыВы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 Вы не можете прикреплять файлы к сообщениям
 Вы можете скачивать файлы
 
 |  |