|
Обновил перевод (метка 210930). Докинул примеров, подправил ошибки, добавил описание внутренних переменных PECMD (=%VAR%.txt). В шапке.
|
alexandr987
- Стаж: 5 лет 1 месяц
- Сообщений: 17
- Репутация: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-Окт-2021 12:51
(спустя 1 час 52 минуты)
|
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-Окт-2021 15:38
(спустя 2 часа 46 минут)
alexandr987
- Стаж: 5 лет 1 месяц
- Сообщений: 17
- Репутация: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
|
|
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
- Стаж: 5 лет 1 месяц
- Сообщений: 17
- Репутация: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
Последний раз редактировалось: alexandr987 (2021-10-25 01:15), всего редактировалось 3 раз(а)
|
|
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
- Стаж: 5 лет 1 месяц
- Сообщений: 17
- Репутация:0[+] [-]
|
SetEdit4 можно сильно упростить Спасибо вам большое, буду разбираться ) Так понял, Вы убрали поиск "правильных" дисков, пусть будет так ))) Методом тыка сработало EDIT Edit4,L105T30W202H24,%WIMFILE%,ENVI @Label1=%Edit1% Строка отображает полный путь по %WIMFILE% и никакой Edit4 не нужен. Попробую вообще избавиться от Edit4 в программе и использовать только %WIMFILE%. Посмотрите строку выше, может что лишнее или не правильно ? Похоже ENVI @Label1=%Edit1% вообще не нужно)
Последний раз редактировалось: alexandr987 (2021-10-25 01:04), всего редактировалось 3 раз(а)
|
|
alexandr987, мой вам совет: начинайте с простых вещей, минимум для обкатки. А потом усложнение. А не наоборот, накидать максимум того, что непонятно, и разбираться с этим.
|
Отправлено: 24-Окт-2021 21:49
(спустя 1 час 43 минуты)
dimo70
- Стаж: 6 лет 11 месяцев
- Сообщений: 3777
- Репутация:27[+] [-]
- Откуда: BG
|
conty9, привет. Очень понравилась твоя утилита для WinPE Подержка Ext2 и AppleHFS, которая позволяет видеть и редактировать линукс и мак разделов. Я переделал для нормального Windows-а и заработала, но не знаю как выключить. Поможешь?
_________________ Подпись отключена за нарушение правил форума
|
|
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
- Стаж: 6 лет 11 месяцев
- Сообщений: 3777
- Репутация:27[+] [-]
- Откуда: BG
|
conty9, спасибо. Попробую сделать и потом выложу.
_________________ Подпись отключена за нарушение правил форума
|
avalat
- Стаж: 9 лет 9 месяцев
- Сообщений: 465
- Репутация:127[+] [-]
|
Просьба модераторам - перекинуть посты выше в тему "PECMD Вопросы??? " при чём тут перевод...
|
Отправлено: 25-Окт-2021 01:16
(спустя 2 часа 51 минута)
alexandr987
- Стаж: 5 лет 1 месяц
- Сообщений: 17
- Репутация: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
Последний раз редактировалось: alexandr987 (2021-10-30 09:53), всего редактировалось 1 раз
|
avalat
- Стаж: 9 лет 9 месяцев
- Сообщений: 465
- Репутация:127[+] [-]
|
alexandr987, Почему не читаешь "Личное сообщение" ?? (вверху, рядом с профилем)
|
Страница 26 из 28
Текущее время: 21-Ноя 17:32
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|