Guest
- REPUTATION:0[+] [-]
|
Обновил перевод (метка 210930). Докинул примеров, подправил ошибки, добавил описание внутренних переменных PECMD (=%VAR%.txt). В шапке.
|
alexandr987
 - Longevity: 3 years 11 months
- Posts: 17
- REPUTATION:0[+] [-]
|
Всем привет) Прошу помощи знатаков, поскольку совсем новичек в этом. Есть основная программа Win3 и ее окно, есть подпрограмма SetEdit4. Как сделать, чтобы сначала запускалась основная программа , а потом автоматически с небольшой задержкой подпрограмма без подавления окна и процесса основной программы. CALL @Win3 _SUB Win3, \\ основная программа ................ ITEM Button5,L320T30W75H24,Browse,CALL SetEdit4 call SetEdit4 _END SetEdit4 \\ подпрограмма .............. _END Если запускать от кнопки Button5, то все ОК, запускается основная программа, потом подпрограмма, но нужно нажимать кнопку, а хочется автоматически. Но кнопка тоже нужна, она есть и работает как надо. Если через call SetEdit4, то сразу запускается подпрограмма, подавляя окно и процесс основной программы. Пробовал прописывать вверху CALL @SetEdit4 рядом с CALL @Win3, но тогда программа и подпрограмма выполняются поочередно.
|
 Отправлено: 24-Oct-2021 12:51
(after 1 hour 52 minutes)
Guest
- REPUTATION:0[+] [-]
|
alexandr987, во-первых, вызвать окно можно по-разному (в смысле соотношений родительского потока и дочернего окна). Строго говоря, вызов call SetEdit4 не во всех версиях PECMD откроет ОКНО, только не очень новые версии интерпретируют это аналогично правильной команде call @SetEdit4.вызов окна, определяемого _SUBCALL @-sub[:@-#LxTyWwHh]] [LeadChar]<WinName> [CMDLineParam] //внешнее подокно @-sub[:@-#LxTyWwHh]] дополнительные настройки дочернего окна: @ сохранить отношение родительского и дочернего окна - есть заголовок # есть рамки LxTyWwHh размер дочернего окна, например:L210T150W170H50 LeadChar символы, оределяющие отношение родительского и дочернего окна: @ вызов окна, определяемого _SUB; для вызова из него другого окна: CALL @ @* вызов дочернего окна _SUB, которое будет работать одновременно с родительским; следующая команда не выполяется до закрытия дочернего окна @- вызов окна _SUB в фоновом режиме и продолжение выполнения следующей команды, но некоторые трудоемкие операции все равно будут заблокированы @~ вызов окна _SUB в фоновом режиме, без блокирования трудоемких операций @+ вызов окна _SUB в фоновом режиме, без блокирования трудоемких операций, дочернее окно независимо и программа не ждёт его закрытия для выхода @^ напоминает @*, но родительское окно не перекрывается дочерним окнм, что применимо к родительскому окну, управляемому исключительно событиями $ Отсутствие указывает на вызывающий подпроцесс, имя которого - параметр; формат параметров функции: в подпроцессе и окне, %0, %1, %2, ...%n относятся соответственно к SubProcName/WinName, и параметр N1, N2,...Nn %# указывает количество параметров %* указывает все параметры, начиная с %1 %~0, %~1, %~2, ...%~n указывает на удаление обрамляющих двойных кавычек %@ указывает все параметры, начиная с %0 Т.е., возможно, подойдёт команда call @~SetEdit4 Во-вторых, можно использовать THREAD (THRD): THRD TEAM WAIT 1000|call @SetEdit4 //эта строчка запустит отдельный поток, в котором через 1000мс запустится независимое окно SetEdit4.
|
 Отправлено: 24-Oct-2021 15:38
(after 2 hours 46 minutes)
alexandr987
 - Longevity: 3 years 11 months
- Posts: 17
- REPUTATION:0[+] [-]
|
возможно, подойдёт команда call @~SetEdit4 Прекрасно работает, но, увы. После закрытия программы остается висеть не завершенный фоновый процесс и с каждым перезапуском программы число этих процессов накапливается. Если подпрограмму SetEdit4 вызывать кнопкой или CALL SetEdit4, то программа завершается корректно и никаких посторонних процессов не остается. Пробую второй вариант THRD. В этом случае секция SetEdit4 запускается и отрабатывает, но не передает данные в основную программу( Завершается работа программы корректно, без лишних роцессов) Вот сама секция _SUB SetEdit4 TEAM FDRV NEnvi=*:|ENVI AllDrv= FORX * %NEnvi%,DEnvi, {* FDRV *vol ,TEnvi=%DEnvi% FIND $%TEnvi%=,EXIT -!ENVI AllDrv=%AllDrv% %DEnvi% } MESS %AllDrv% *2000 FORX * %AllDrv%,DEnvi,IFEX %DEnvi%\ISO\*.wim,TEAM MESS %DEnvi% *2000| EXIT FORX %DEnvi%\ISO\*.wim,WIMFILE,0,CALL PthName MESS %WIMFILE% *3000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END MESS %WIMFILE% отображает полный путь, но этот путь не подхватывается основной программой, но если по кнопке или через CALL SetEdit4 или call @~SetEdit4, то все ОК) Может вообще как-то это можно переделать, чтобы сначала был поиск , а потом запуск основного окна программы. Тогда секцию, и как следствие кнопку можно убрать. Если просто CALL SetEdit4, то все работает и завершается как надо, просто на время отработки секции SetEdit4 подавляется основное окно программы. Ну и хрен с ним) Вот вся программа по которой еще куча вопросов, если можно, конечно)CALL @Win3 ENVI MNTDIR= ENVI WIMFILE= _SUB SetEdit45 // ручной выбор файла, пока без кнопки ENVI Wimfile= BROW Wimfile,install.wim,Please select the image source to be applied,wim;esd;swm|*.wim;*.esd;*.swm|All files|*.*|,0x1000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB SetEdit4 TEAM FDRV NEnvi=*:|ENVI AllDrv= FORX * %NEnvi%,DEnvi, {* FDRV *vol ,TEnvi=%DEnvi% FIND $%TEnvi%=,EXIT -!ENVI AllDrv=%AllDrv% %DEnvi% } MESS %AllDrv% *2000 FORX * %AllDrv%,DEnvi,IFEX %DEnvi%\ISO\*.wim,TEAM MESS %DEnvi% *2000| EXIT FORX %DEnvi%\ISO\*.wim,WIMFILE,0,CALL PthName MESS %WIMFILE% *3000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB Apply TEAM ENVI @item2=Выполняется| ENVI @item2.Enable=0 ENVI @Button31.enable=0 ENVI Result=1 FIND $%Edit4%=,TEAM ENVI Result=0|MESS Выберите образ Windows! @Внимание !#OK FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите раздел для установки Windows! @Внимание !#OK FIND $%Result%=1,EXEC =CMD /C mode con cols=63 lines=10 & Dism /apply-image /imagefile:"%Edit4%" /index:%index2% /ApplyDir:"%List4%" & ping localhost -n 3 > nul TEAM ENVI @item2=Завершено| ENVI @item2.Enable=0 call @FIX _END _SUB Win3,W420H460,Установка Windows из .wim файла,,PECMD.EXE#1 ENVI &::index2=1 ENVI MEMO1= FDRV AllDrive= MEMO MEMO1,L7T170W400H190,,,0x8 GROU Group2,L7T6W398H150,Параметры установки,,0xff0000, LABE Label4,L15T27W110H30,Выберите файл установки EDIT Edit4,L105T30W202H24, ITEM Button5,L320T30W75H24,Browse,CALL SetEdit4 LABE Label5,L15T67W110H30,Выберите диск для установки LIST List4,L130T70W40H35,%AllDrive%,TEAM envi panfu2=%list4%|envi @item2.enable=1|envi @Button22.enable=1 // ITEM Button30,L230T360W130H24,Управление дисками,mmc.exe /b diskmgmt.msc LIST LIST1,L130T110W38H200,1,envi index2=%LIST1%,1, LABE Label6,L15T106W110H26,Индекс редакции Windows ITEM Button26,L182T67W100H24,Wim инфо,EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%WIMFILE%" /index:%index2% 2>&1, ITEM Button22,L295T67W100H24,Формат,CALL FORM, ITEM ITEM2,L182T100W100H35,Установить,CALL Apply, ITEM Button31,L295T100W100H35,Загрузчик,CALL FIX, GROU Group3,L7T360W398H60,Информация,,0xff0000, LIST LAN,L210T382W55H100,RUS,,RUS,0x4 LIST LUN,L335T382W55H100,BIOS,,BIOS,0x4 LABE LABE1,L168T387W35H17,Язык,, LABE LABE4,L300T387W35H17,Тип,, RADI RADI1,L20T385W132H18,,call fund,1, // ENVI ?disme=FVER,%CurDir%\dism.exe ENVI ?disme=FVER,%WinDir%\System32\dism.exe envi @RADI1=Dism %disme% RSTR disme1=5,%disme% LSTR disme2=3,%disme% envi disme=%disme2%%disme1% envi @item2.enable=0 envi @Button31.enable=0 envi @Button22.enable=0 THRD TEAM WAIT 1000|call @SetEdit4 _END // Format ============================================================================== _SUB FORM ENVI Result=1 FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите диск для установки Windows @Внимание !#OK MESS Диск %List4% будет отформатирован @Внимание !#YN $N FIND $%YESNO%=NO,CALL FORM2 TEAM ENVI @Button22=Выполняется| ENVI @Button22.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Format %LIST4% /FS:NTFS /Q /V:System /Y WAIT 1500 TEAM ENVI @Button22=Завершено WAIT 3000 TEAM ENVI @Button22=Формат| ENVI @Button22.Enable=1 _END _SUB FORM2 TEAM MESS Правильно! Нафик оно надо) # *3000| WAIT 1000| KILL \ EXIT _END // Bcdboot ============================================================================= _SUB FIX WAIT 1500 TEAM ENVI @Button31=Выполняется| ENVI @Button31.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!bcdboot.exe %LIST4%\Windows /s %LIST4% /f BIOS /l ru-ru WAIT 1500 TEAM ENVI @Button31=Завершено| ENVI @Button31.Enable=0 WAIT 6000 TEAM ENVI @Button31=Загрузчик| ENVI @Button31.Enable=1 TEAM ENVI @item2=Установить| ENVI @item2.Enable=1 _END _SUB llj //MEMO ENVI @LABE3=%~1 find $%radi1.check%=1, { FIND $X=X%~1, TEAM envi @item2.enable=0| envi @item4.enable=0! TEAM EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%~1" 2>&1 | envi @item4.enable=1 read -,-1,&&pos,%MEMO1% calc #&&ipos = (%&pos% - 7)/5 envi &&i=1 envi &&j= loop %&i%<=%&ipos%, { envi &j=%&j%%&i%| CALC &i= %&i% + 1 } TEAM envi @list1.VAL=%&j%| envi @list1.SEL=1 } _END
|
Guest
- REPUTATION:0[+] [-]
|
alexandr987, так SetEdit4 - это обычная подпрограмма, а не окно? Тогда что мешает вначале вызвать её, а тогда открыть окноcall SetEdit4 CALL @Win3 _SUB Win3, \\ основная программа ................ ITEM Button5,L320T30W75H24,Browse,CALL SetEdit4 _END Если хочется, чтобы основное окно открывалось БЕЗ ожидания отработки подпрограммы, тогда THRD call SetEdit4 CALL @Win3 ... Но во этом случае не забываем, что открытое окно Win3 использует переменные НА МОМЕНТ СВОЕГО ЗАПУСКА, и, чтобы их изменить, нужно использовать не ENVI XXX=%YYY%, а ENVI @XXX=%YYY% В частности, в приведённом примере нужно так писать: FORX %DEnvi%\ISO\*.wim,WIMFILE,0,TEAM ENVI @WIMFILE=%WIMFILE%|CALL PthName Тогда переменная WIMFILE станет глобальной для всего скрипта, а не только для конкретной подпрограммы (или даже одной команды - в случае с FORX).
|
alexandr987
 - Longevity: 3 years 11 months
- Posts: 17
- REPUTATION:0[+] [-]
|
SetEdit4 - это обычная подпрограмма, а не окно? Это поиск *.wim файла, здесь нет никаких окон, кроме отладочных MESS, которые позже, скорее всего, будут удалены.Тогда что мешает вначале вызвать её, а тогда открыть окно Я именно так и планировал, руководствуясь вашими пояснениями "Скрипт 78RePack - как смог, так и описал.", но это не заработало, потому начал городить по своему, не сильно разбираясь в вопросе. Буду разбираться)Если хочется, чтобы основное окно открывалось БЕЗ ожидания отработки подпрограммы, тогда THRD call SetEdit4 CALL @Win3 Это я пробовал, но путь не заполняется в окошко. Замена строки FORX %DEnvi%\ISO\*.wim,WIMFILE,0,CALL PthName на FORX %DEnvi%\ISO\*.wim,WIMFILE,0,TEAM ENVI @WIMFILE=%WIMFILE%|CALL PthName не помогает Вся секция выглядет такTHRD TEAM WAIT 1000|call SetEdit4 CALL @Win3 _SUB SetEdit4 TEAM FDRV NEnvi=*:|ENVI AllDrv= FORX * %NEnvi%,DEnvi, {* FDRV *vol ,TEnvi=%DEnvi% FIND $%TEnvi%=,EXIT -!ENVI AllDrv=%AllDrv% %DEnvi% } MESS %AllDrv% *2000 FORX * %AllDrv%,DEnvi,IFEX %DEnvi%\ISO\*.wim,TEAM MESS %DEnvi% *2000| EXIT FORX %DEnvi%\ISO\*.wim,WIMFILE,0,ENVI @WIMFILE=%WIMFILE% MESS %WIMFILE% *3000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END Неа, путь не перехватывается, хотя MESS %WIMFILE% показывает правильный полный путь. Но далее он не "подхватывается" программой Возможно ENVI @WIMFILE=%WIMFILE% не срабатывает из-за ошибки в строке.открытое окно Win3 использует переменные НА МОМЕНТ СВОЕГО ЗАПУСКА Вот именно, окно Win3 открывается до запуска поиска SetEdit4, потому и остается путым. Видимо, нужно сначала запускать поиск SetEdit4, и только потом открывать основное окно @Win3. Ну, или перезапускать Win3 после окончания поиска SetEdit4, но тогда, скорее всего оно откроется в новом процессе и будет два окна ))) Проверил, что переменная WIMFILE все таки подхватывается (команда отрабатывается с правильными путями), а проблема может быть в FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE%, вот @Edit4, которая нужна для работы основного окна, пустая. Потому и строка не отображает путь EDIT Edit4,L105T30W202H24, в Edit4 пусто, нечего отображать. А просто нельзя использовать %WIMFILE%, зачем нужна эта Edit4 ? ))) Сами команды обходятся без Edit4 и прекрасно работают с %WIMFILE% ) Быть может Edit4 нужна только для отображения в EDIT ? Полный код программыCALL @Win3 ENVI MNTDIR= ENVI WIMFILE= _SUB SetEdit45 ENVI Wimfile= BROW Wimfile,install.wim,Please select the image source to be applied,wim;esd;swm|*.wim;*.esd;*.swm|All files|*.*|,0x1000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB SetEdit4 TEAM FDRV NEnvi=*:|ENVI AllDrv= FORX * %NEnvi%,DEnvi, {* FDRV *vol ,TEnvi=%DEnvi% FIND $%TEnvi%=,EXIT -!ENVI AllDrv=%AllDrv% %DEnvi% } MESS %AllDrv% *2000 FORX * %AllDrv%,DEnvi,IFEX %DEnvi%\ISO\*.wim,TEAM MESS %DEnvi% *2000| EXIT FORX %DEnvi%\ISO\*.wim,WIMFILE,0,CALL PthName MESS %WIMFILE% *3000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB Apply TEAM ENVI @item2=Выполняется| ENVI @item2.Enable=0 ENVI @Button31.enable=0 ENVI Result=1 FIND $%Edit4%=,TEAM ENVI Result=0|MESS Выберите образ Windows! @Внимание !#OK FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите раздел для установки Windows! @Внимание !#OK FIND $%Result%=1,EXEC =CMD /C mode con cols=63 lines=10 & Dism /apply-image /imagefile:"%Edit4%" /index:%index2% /ApplyDir:"%List4%" & ping localhost -n 3 > nul TEAM ENVI @item2=Завершено| ENVI @item2.Enable=0 call @FIX _END _SUB Win3,W420H460,Установка Windows из .wim файла,,PECMD.EXE#1 ENVI &::index2=1 ENVI MEMO1= FDRV AllDrive= MEMO MEMO1,L7T170W400H190,,,0x8 GROU Group2,L7T6W398H150,Параметры установки,,0xff0000, LABE Label4,L15T27W110H30,Выберите файл установки EDIT Edit4,L105T30W202H24, ITEM Button5,L320T30W75H24,Browse,CALL SetEdit4 LABE Label5,L15T67W110H30,Выберите диск для установки LIST List4,L130T70W40H35,%AllDrive%,TEAM envi panfu2=%list4%|envi @item2.enable=1|envi @Button22.enable=1 // ITEM Button30,L230T360W130H24,Управление дисками,mmc.exe /b diskmgmt.msc LIST LIST1,L130T110W38H200,1,envi index2=%LIST1%,1, LABE Label6,L15T106W110H26,Индекс редакции Windows ITEM Button26,L182T67W100H24,Wim инфо,EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%WIMFILE%" /index:%index2% 2>&1, ITEM Button22,L295T67W100H24,Формат,CALL FORM, ITEM ITEM2,L182T100W100H35,Установить,CALL Apply, ITEM Button31,L295T100W100H35,Загрузчик,CALL FIX, GROU Group3,L7T360W398H60,Информация,,0xff0000, LIST LAN,L210T382W55H100,RUS,,RUS,0x4 LIST LUN,L335T382W55H100,BIOS,,BIOS,0x4 LABE LABE1,L168T387W35H17,Язык,, LABE LABE4,L300T387W35H17,Тип,, RADI RADI1,L20T385W132H18,,call fund,1, // ENVI ?disme=FVER,%CurDir%\dism.exe ENVI ?disme=FVER,%WinDir%\System32\dism.exe envi @RADI1=Dism %disme% RSTR disme1=5,%disme% LSTR disme2=3,%disme% envi disme=%disme2%%disme1% envi @item2.enable=0 envi @Button31.enable=0 envi @Button22.enable=0 _END // Format ============================================================================== _SUB FORM ENVI Result=1 FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите диск для установки Windows @Внимание !#OK MESS Диск %List4% будет отформатирован @Внимание !#YN $N FIND $%YESNO%=NO,CALL FORM2 TEAM ENVI @Button22=Выполняется| ENVI @Button22.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Format %LIST4% /FS:NTFS /Q /V:System /Y WAIT 1500 TEAM ENVI @Button22=Завершено WAIT 3000 TEAM ENVI @Button22=Формат| ENVI @Button22.Enable=1 _END _SUB FORM2 TEAM MESS Правильно! Нафик оно надо) # *3000| WAIT 1000| KILL \ EXIT _END // Bcdboot ============================================================================= _SUB FIX WAIT 1500 TEAM ENVI @Button31=Выполняется| ENVI @Button31.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!bcdboot.exe %LIST4%\Windows /s %LIST4% /f BIOS /l ru-ru WAIT 1500 TEAM ENVI @Button31=Завершено| ENVI @Button31.Enable=0 WAIT 6000 TEAM ENVI @Button31=Загрузчик| ENVI @Button31.Enable=1 TEAM ENVI @item2=Установить| ENVI @item2.Enable=1 _END _SUB llj //MEMO ENVI @LABE3=%~1 find $%radi1.check%=1, { FIND $X=X%~1, TEAM envi @item2.enable=0| envi @item4.enable=0! TEAM EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%~1" 2>&1 | envi @item4.enable=1 read -,-1,&&pos,%MEMO1% calc #&&ipos = (%&pos% - 7)/5 envi &&i=1 envi &&j= loop %&i%<=%&ipos%, { envi &j=%&j%%&i%| CALC &i= %&i% + 1 } TEAM envi @list1.VAL=%&j%| envi @list1.SEL=1 } _END
Last edited by alexandr987 on 2021-10-25 01:15; edited 3 times in total
|
Guest
- REPUTATION:0[+] [-]
|
SetEdit4 можно сильно упроститьcall SetEdit4 CALL @Win3 ENVI MNTDIR= ENVI WIMFILE= _SUB SetEdit45 // ручной выбор файла, пока без кнопки ENVI Wimfile= BROW Wimfile,install.wim,Please select the image source to be applied,wim;esd;swm|*.wim;*.esd;*.swm|All files|*.*|,0x1000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB SetEdit4 FORX \ISO\*.wim,WIMFILE,1,TEAM ENVI Edit4=%WIMFILE% FDIR ypath=%Edit4% call llj "%WIMFILE%" _END _SUB Apply TEAM ENVI @item2=Выполняется| ENVI @item2.Enable=0 ENVI @Button31.enable=0 ENVI Result=1 FIND $%Edit4%=,TEAM ENVI Result=0|MESS Выберите образ Windows! @Внимание !#OK FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите раздел для установки Windows! @Внимание !#OK FIND $%Result%=1,EXEC =CMD /C mode con cols=63 lines=10 & Dism /apply-image /imagefile:"%Edit4%" /index:%index2% /ApplyDir:"%List4%" & ping localhost -n 3 > nul TEAM ENVI @item2=Завершено| ENVI @item2.Enable=0 call @FIX _END _SUB Win3,W420H460,Установка Windows из .wim файла,,PECMD.EXE#1 ENVI &::index2=1 ENVI MEMO1= FDRV AllDrive= MEMO MEMO1,L7T170W400H190,,,0x8 GROU Group2,L7T6W398H150,Параметры установки,,0xff0000, LABE Label4,L15T27W110H30,Выберите файл установки EDIT Edit4,L105T30W202H24,%Edit4% ITEM Button5,L320T30W75H24,Browse,CALL SetEdit4 LABE Label5,L15T67W110H30,Выберите диск для установки LIST List4,L130T70W40H35,%AllDrive%,TEAM envi panfu2=%list4%|envi @item2.enable=1|envi @Button22.enable=1 // ITEM Button30,L230T360W130H24,Управление дисками,mmc.exe /b diskmgmt.msc LIST LIST1,L130T110W38H200,1,envi index2=%LIST1%,1, LABE Label6,L15T106W110H26,Индекс редакции Windows ITEM Button26,L182T67W100H24,Wim инфо,EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%WIMFILE%" /index:%index2% 2>&1, ITEM Button22,L295T67W100H24,Формат,CALL FORM, ITEM ITEM2,L182T100W100H35,Установить,CALL Apply, ITEM Button31,L295T100W100H35,Загрузчик,CALL FIX, GROU Group3,L7T360W398H60,Информация,,0xff0000, LIST LAN,L210T382W55H100,RUS,,RUS,0x4 LIST LUN,L335T382W55H100,BIOS,,BIOS,0x4 LABE LABE1,L168T387W35H17,Язык,, LABE LABE4,L300T387W35H17,Тип,, RADI RADI1,L20T385W132H18,,call fund,1, // ENVI ?disme=FVER,%CurDir%\dism.exe ENVI ?disme=FVER,%WinDir%\System32\dism.exe envi @RADI1=Dism %disme% RSTR disme1=5,%disme% LSTR disme2=3,%disme% envi disme=%disme2%%disme1% envi @item2.enable=0 envi @Button31.enable=0 envi @Button22.enable=0 _END // Format ============================================================================== _SUB FORM ENVI Result=1 FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите диск для установки Windows @Внимание !#OK MESS Диск %List4% будет отформатирован @Внимание !#YN $N FIND $%YESNO%=NO,CALL FORM2 TEAM ENVI @Button22=Выполняется| ENVI @Button22.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Format %LIST4% /FS:NTFS /Q /V:System /Y WAIT 1500 TEAM ENVI @Button22=Завершено WAIT 3000 TEAM ENVI @Button22=Формат| ENVI @Button22.Enable=1 _END _SUB FORM2 TEAM MESS Правильно! Нафик оно надо) # *3000| WAIT 1000| KILL \ EXIT _END // Bcdboot ============================================================================= _SUB FIX WAIT 1500 TEAM ENVI @Button31=Выполняется| ENVI @Button31.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!bcdboot.exe %LIST4%\Windows /s %LIST4% /f BIOS /l ru-ru WAIT 1500 TEAM ENVI @Button31=Завершено| ENVI @Button31.Enable=0 WAIT 6000 TEAM ENVI @Button31=Загрузчик| ENVI @Button31.Enable=1 TEAM ENVI @item2=Установить| ENVI @item2.Enable=1 _END _SUB llj //MEMO ENVI @LABE3=%~1 find $%radi1.check%=1, { FIND $X=X%~1, TEAM envi @item2.enable=0| envi @item4.enable=0! TEAM EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%~1" 2>&1 | envi @item4.enable=1 read -,-1,&&pos,%MEMO1% calc #&&ipos = (%&pos% - 7)/5 envi &&i=1 envi &&j= loop %&i%<=%&ipos%, { envi &j=%&j%%&i%| CALC &i= %&i% + 1 } TEAM envi @list1.VAL=%&j%| envi @list1.SEL=1 } _END
|
alexandr987
 - Longevity: 3 years 11 months
- Posts: 17
- REPUTATION:0[+] [-]
|
SetEdit4 можно сильно упростить Спасибо вам большое, буду разбираться ) Так понял, Вы убрали поиск "правильных" дисков, пусть будет так ))) Методом тыка сработало EDIT Edit4,L105T30W202H24,%WIMFILE%,ENVI @Label1=%Edit1% Строка отображает полный путь по %WIMFILE% и никакой Edit4 не нужен. Попробую вообще избавиться от Edit4 в программе и использовать только %WIMFILE%. Посмотрите строку выше, может что лишнее или не правильно ? Похоже ENVI @Label1=%Edit1% вообще не нужно)
Last edited by alexandr987 on 2021-10-25 01:04; edited 3 times in total
|
Guest
- REPUTATION:0[+] [-]
|
alexandr987, мой вам совет: начинайте с простых вещей, минимум для обкатки. А потом усложнение. А не наоборот, накидать максимум того, что непонятно, и разбираться с этим.
|
 Отправлено: 24-Oct-2021 21:49
(after 1 hour 43 minutes)
dimo70
 - Longevity: 5 years 9 months
- Posts: 3992
- REPUTATION:29[+] [-]
- Location: BG
|
conty9, привет. Очень понравилась твоя утилита для WinPE Подержка Ext2 и AppleHFS, которая позволяет видеть и редактировать линукс и мак разделов. Я переделал для нормального Windows-а и заработала, но не знаю как выключить. Поможешь?
_________________ Signed off for violation of forum rules
|
Guest
- REPUTATION:0[+] [-]
|
dimo70, ну, это вовсе не утилита, просто скрипт подключения драйверов. Чтобы "выключить", нужно в реестреудалить службы AppleHFS и ext2fsdWindows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleHFS] [-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ext2fsd] Или при помощи PECMD: TEAM SERV-delete AppleHFS|SERV-delete ext2fsd После перезагрузки поддержка исчезнет. Если больше не нужно, и сами драйверы можно удалить. Если же периодически нужно, можно изменить значение Start для соответствующего драйвера (Start=4 - отключить драйвер).
|
dimo70
 - Longevity: 5 years 9 months
- Posts: 3992
- REPUTATION:29[+] [-]
- Location: BG
|
conty9, спасибо. Попробую сделать и потом выложу.
_________________ Signed off for violation of forum rules
|
avalat
  - Longevity: 8 years 7 months
- Posts: 391
- REPUTATION:127[+] [-]
|
Просьба модераторам - перекинуть посты выше в тему "PECMD Вопросы??? " при чём тут перевод...
|
 Отправлено: 25-Oct-2021 01:16
(after 2 hours 51 minute)
alexandr987
 - Longevity: 3 years 11 months
- Posts: 17
- REPUTATION:0[+] [-]
|
начинайте с простых вещей Вот и упрощаю) Поубирал ненужные (в моем понимании) взаимодублирующие переменные, упростил некоторые секции. Код программыCALL SetEdit4 CALL @Win3 ENVI MNTDIR= ENVI WIMFILE= _SUB SetEdit45 ENVI Wimfile= BROW Wimfile,install.wim,Please select the image source to be applied,wim;esd;swm|*.wim;*.esd;*.swm|All files|*.*|,0x1000 FIND $%WIMFILE%=,!ENVI @Edit4=%WIMFILE% FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB SetEdit4 TEAM FDRV NEnvi=*:|ENVI AllDrv= FORX * %NEnvi%,DEnvi, {* FDRV *vol ,TEnvi=%DEnvi% FIND $%TEnvi%=,EXIT -!ENVI AllDrv=%AllDrv% %DEnvi% } MESS %AllDrv% *2000 FORX * %AllDrv%,DEnvi,IFEX %DEnvi%\ISO\*.wim,EXIT FORX %DEnvi%\ISO\*.wim,WIMFILE,0,CALL PthName MESS %WIMFILE% *2000 FDIR ypath=%WIMFILE% call llj "%WIMFILE%" _END _SUB Apply TEAM ENVI @item2=Выполняется| ENVI @item2.Enable=0 ENVI @Button31.enable=0 ENVI Result=1 FIND $%WIMFILE%=,TEAM ENVI Result=0|MESS Выберите образ Windows! @Внимание !#OK FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите раздел для установки Windows! @Внимание !#OK FIND $%Result%=1,EXEC =CMD /C mode con cols=63 lines=10 & Dism /apply-image /imagefile:"%WIMFILE%" /index:%LIST1% /ApplyDir:"%List4%" & ping localhost -n 3 > nul TEAM ENVI @item2=Завершено| ENVI @item2.Enable=0 call @FIX _END _SUB Win3,W420H460,Установка Windows из .wim файла,,PECMD.EXE#1 ENVI &::index2=1 ENVI MEMO1= FDRV AllDrive= MEMO MEMO1,L7T170W400H190,,,0x8 GROU Group2,L7T6W398H150,Параметры установки,,0xff0000, LABE Label4,L15T27W110H30,Выберите файл установки EDIT Edit4,L105T30W202H24,%WIMFILE%, ITEM Button5,L320T30W75H24,Browse,CALL SetEdit4 LABE Label5,L15T67W110H30,Выберите диск для установки LIST List4,L130T70W40H35,%AllDrive%,TEAM envi panfu2=%list4%|envi @item2.enable=1|envi @Button22.enable=1 // ITEM Button30,L230T360W130H24,Управление дисками,mmc.exe /b diskmgmt.msc LIST LIST1,L130T110W38H200,1|2|,,1,0x4 LABE Label6,L15T106W110H26,Индекс редакции Windows ITEM Button26,L182T67W100H24,Wim инфо,TEAM EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%WIMFILE%" /index:%LIST1% 2>&1| ENVI @Button26=Wim инфо %LIST1% ITEM Button22,L295T67W100H24,Формат,CALL FORM, ITEM ITEM2,L182T100W100H35,Установить,CALL Apply, ITEM Button31,L295T100W100H35,Загрузчик,CALL FIX, GROU Group3,L7T360W398H60,Информация,,0xff0000, LIST LAN,L210T382W55H100,RUS,,RUS,0x4 LIST LUN,L335T382W55H100,BIOS,,BIOS,0x4 LABE LABE1,L168T387W35H17,Язык,, LABE LABE4,L300T387W35H17,Тип,, RADI RADI1,L20T385W132H18,,call fund,1, // ENVI ?disme=FVER,%CurDir%\dism.exe ENVI ?disme=FVER,%WinDir%\System32\dism.exe envi @RADI1=Dism %disme% RSTR disme1=5,%disme% LSTR disme2=3,%disme% envi disme=%disme2%%disme1% envi @item2.enable=0 envi @Button31.enable=0 envi @Button22.enable=0 call llj _END // Format ============================================================================== _SUB FORM ENVI Result=1 FIND $%List4%=,TEAM ENVI Result=0|MESS Выберите диск для установки Windows @Внимание !#OK MESS Диск %List4% будет отформатирован @Внимание !#YN $N FIND $%YESNO%=NO,CALL FORM2 TEAM ENVI @Button22=Выполняется| ENVI @Button22.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Format %LIST4% /FS:NTFS /Q /V:System /Y WAIT 1500 TEAM ENVI @Button22=Завершено WAIT 3000 TEAM ENVI @Button22=Формат| ENVI @Button22.Enable=1 _END _SUB FORM2 TEAM MESS Правильно! Нафик оно надо) # *3000| WAIT 1000| KILL \ EXIT _END // Bcdboot ============================================================================= _SUB FIX WAIT 1500 TEAM ENVI @Button31=Выполняется| ENVI @Button31.Enable=0 WAIT 1500 EXEC* -code:866 -err+ @MEMO1=!bcdboot.exe %LIST4%\Windows /s %LIST4% /f BIOS /l ru-ru WAIT 1500 TEAM ENVI @Button31=Завершено| ENVI @Button31.Enable=0 WAIT 6000 TEAM ENVI @Button31=Загрузчик| ENVI @Button31.Enable=1 TEAM ENVI @item2=Установить| ENVI @item2.Enable=1 _END _SUB llj EXEC* -code:866 -err+ @MEMO1=!cmd.exe /c Dism /get-wiminfo /wimFile:"%WIMFILE%" 2>&1 _END
Last edited by alexandr987 on 2021-10-30 09:53; edited 1 time in total
|
avalat
  - Longevity: 8 years 7 months
- Posts: 391
- REPUTATION:127[+] [-]
|
alexandr987, Почему не читаешь "Личное сообщение" ?? (вверху, рядом с профилем)
|
Page 26 of 27
Current time is: 24-Sep 04:46
All times are UTC + 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|