puhpol
- Longevity: 10 years
- Posts: 892
- REPUTATION:75[+] [-]
|
Приветствую господа! Предлагаю в данной теме выкладывать примеры работы скриптов на PECMD. Добавлено через 2 минуты 54 секунды: Сам и начну. Скрипт для организации удобной работой с носителем. Сделано для себя любимого, здесь как пример. .Сам скриптCALC #XEnvi=0 ENVI pb=CALC Pbar1=%Pbar1%+%b% ENVI pb1=ENVI @Pbar1=%Pbar1% ENVI p=CALC n=%n%+1 CALL @Windows1 _SUB Windows1,W400H240,Установка программ,, ENVI @this.Font=14:Tahoma LABE Label1,L10T10W380H20,Что будем делать?,,0xaaaaaa,16 ITEM But1,L20T50W350H25,Установить Минимальный пакет программ,CALL W2 ITEM But2,L20T95W150H25,Запуск MInstAll,TEAM EXEC %CurDir%\MInstAll\MInst.exe|KILL \%Windows1% ITEM But3,L220T95W150H25,Активаторы,CALL W3 ITEM But4,L20T140W350H25,Office 2013-2019 C2R Install,TEAM EXEC %CurDir%\MInstAll\software\Activation\Office2013_2019\OInstall.exe|KILL \%Windows1% _END _SUB W3,W400H240,Активаторы,, ENVI @this.Font=14:Tahoma ITEM Bu1,L20T50W350H25,KMSAuto++ Portable v1.5.5,TEAM EXEC %CurDir%\MInstAll\software\Activation\KMSAuto++\KMSAuto++.exe|KILL \%W3% ITEM Bu2,L20T95W350H25,Windows Loader 2.2.2 by Daz,TEAM EXEC %CurDir%\MInstAll\software\Activation\Loader\Windows Loader.exe|KILL \%W3% //ITEM Bu3,L20T140W350H25,Office 2013-2019 C2R Install,TEAM EXEC %CurDir%\MInstAll\software\Activation\Office2013_2019\OInstall.exe|KILL \%W3% _END _SUB W2,W400H280,Мини Инсталл,, ENVI @this.Font=12:Tahoma LABE Label,L10T10W380H20,Выберите программы для установки ,,0xaaaaaa,16 // рисуем чекбоксы CHEK Chk1,L15T40W150H20,7-Zip 19.00,,1 CHEK Chk2,L15T60W150H20,SumatraPDF 3.1.2,,1 CHEK Chk3,L15T80W150H20,UltraISO 9.7.2.3561,,1 CHEK Chk4,L15T100W150H20,WinRAR 5.71,,1 CHEK Chk5,L15T120W150H20,RuntimePack Lite,,1 //CHEK Chk6,L15T140W150H20,RuntimePack Lite,,0 CHEK Chk7,L220T40W250H20,Notepad++,,1 CHEK Chk8,L220T60W250H20,VLC,,1 CHEK Chk9,L220T80W250H20,XnShell,,1 CHEK Chk10,L220T100W250H20,Office2003micro,,1 CHEK Chk11,L220T120W250H20,DirectX 9.0c,,1 //CHEK Chk12,L220T140W250H20,DirectX 9.0c,,0 PBAR PBAR1,L15T180W365H20,, ENVI @Pbar1=-1 //Задаём начальное значение прогрессбара, при -1 он невидим ITEM Button1,L15T215W100H24,Снять выбор,CALL Slct ITEM Button2,L285T215W100H24,Установить,CALL puh LABE h1,L130T200W120H24, ,,0x0000FF,14 _END _SUB Slct FORX* 1 2 3 4 5 6 7 8 9 10 11 12,TEnvi,ENVI @Chk%TEnvi%.Check=%XEnvi% CALC XEnvi=lnot(%XEnvi%) FIND $%XEnvi%=0,ENVI @Button1=Снять выбор!ENVI @Button1=Выбрать всё _END _SUB puh MESS Установить выбранные приложения?@#YN FIND $%YESNO%=YES,CALL st FIND $%YESNO%=NO,EXIT _END _SUB st ENVI n=0 IFEX $%Chk1.Check%=1,%p% IFEX $%Chk2.Check%=1,%p% IFEX $%Chk3.Check%=1,%p% IFEX $%Chk4.Check%=1,%p% IFEX $%Chk5.Check%=1,%p% IFEX $%Chk6.Check%=1,%p% IFEX $%Chk7.Check%=1,%p% IFEX $%Chk8.Check%=1,%p% IFEX $%Chk9.Check%=1,%p% IFEX $%Chk10.Check%=1,%p% IFEX $%Chk11.Check%=1,%p% IFEX $%Chk12.Check%=1,%p% CALC b=100/%n% ENVI @Pbar1=0 CALL inst _END _SUB inst ENVI @h1=Установка ..... IFEX $%Chk1.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\Archivers\7-Zip-19.00.exe" /ais|%pb%|%pb1% IFEX $%Chk2.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\Office\SumatraPDF-3.1.2.exe" /ais|%pb%|%pb1% IFEX $%Chk3.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\ISO\UltraISO-9.7.2.3561.exe" /VERYSILENT|%pb%|%pb1% IFEX $%Chk4.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\Archivers\WinRAR-5.71.exe" /ais|%pb%|%pb1% IFEX $%Chk5.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\System\RuntimePack_Lite-17.3.14.exe" /y /gm2 /fm0|%pb%|%pb1% //IFEX $%Chk6.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\prog\"|%pb%|%pb1% IFEX $%Chk7.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\Text\Notepad++7.8.1.exe" /ais|%pb%|%pb1% IFEX $%Chk8.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\Players\VLC-3.0.8.exe" /ais|%pb%|%pb1% IFEX $%Chk9.Check%=1,TEAM EXEC =*"%CurDir%\MInstAll\software\Graphics\XnShell.cmd"|%pb%|%pb1% IFEX $%Chk10.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\Office_micro\Office2003micro.exe" /y| EXEC ="%CurDir%\MInstAll\Office_micro\Office2007support.exe"|%pb%|%pb1% IFEX $%Chk11.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\System\DirectX.exe" /S|%pb%|%pb1% //IFEX $%Chk12.Check%=1,TEAM EXEC ="%CurDir%\MInstAll\software\prog\"|%pb%|%pb1% ENVI @h1=ГОТОВО! TIPS Выбранные приложения установленны!!!, \n,5000,1, KILL \%W2% _END
|
dimo70
- Longevity: 7 years
- Posts: 3784
- REPUTATION:27[+] [-]
- Location: BG
|
puhpol, спасибо большое за скрипт. Очень помог мне сделать мою утилитку Defender Killer.скриптCALC #XEnvi=0 ENVI pb=CALC Pbar1=%Pbar1%+%b% ENVI pb1=ENVI @Pbar1=%Pbar1% ENVI p=CALC n=%n%+1 CALL @Windows1 _SUB Windows1,W250H130,Defender Killer,, ENVI @this.Font=16:Tahoma LABE Label1,L0T10W250H20,Killing Windows Defender,,0xaaaaaa,16 ITEM But1,L22T45W200H30,Kill Defender,EXEC %CurDir%\DefenderKiller\Defenfer_Removal.cmd _END Есть только один вопрос пока: есть вариант сделать тихую установку с ключа?
_________________ Signed off for violation of forum rules
|
loban_ser
- Longevity: 6 years 9 months
- Posts: 577
- REPUTATION:24[+] [-]
|
75419EXEC %CurDir%\DefenderKiller\Defenfer_Removal.cmd EXEC !%CurDir%\DefenderKiller\Defenfer_Removal.cmd - скрыть EXEC =%CurDir%\DefenderKiller\Defenfer_Removal.cmd - с ожиданием вроде так
|
sergeysvirid
- Longevity: 9 years
- Posts: 2585
- REPUTATION:127[+] [-]
- Location: 65 регион (GMT+11)
|
loban_ser, dimo70, Может всё таки как то так?: CALL @Windows1 _SUB Windows1,W250H130,Defender Killer,, ENVI @this.Font=16:Tahoma LABE Label1,L0T10W250H20,Killing Windows Defender,,0xaaaaaa,16 ITEM But1,L22T45W200H30,Kill Defender,TEAM EXEC =!%CurDir%\DefenderKiller\Defenfer_Removal.cmd|KILL \%Windows1% _END
|
dimo70
- Longevity: 7 years
- Posts: 3784
- REPUTATION:27[+] [-]
- Location: BG
|
75445 CALL @Windows1 _SUB Windows1,W250H130,Defender Killer,, ENVI @this.Font=16:Tahoma LABE Label1,L0T10W250H20,Killing Windows Defender,,0xaaaaaa,16 ITEM But1,L22T45W200H30,Kill Defender,TEAM EXEC =!%CurDir%\DefenderKiller\Defenfer_Removal.cmd|KILL \%Windows1% _END Пробовал, так проще всего и проблем нет. Обновлю.
_________________ Signed off for violation of forum rules
|
Guest
- REPUTATION:0[+] [-]
|
Cкопировал из темы PECMD:Скрипт для создания списка исключительно 'работающих' буковок дисковTEAM FDRV NEnvi=*:|ENVI AllDrv= FORX * %NEnvi%,DEnvi, {* FDRV *vol ,TEnvi=%DEnvi% FIND $%TEnvi%=,EXIT -!ENVI AllDrv=%AllDrv% %DEnvi% } MESS %AllDrv% Скрипт работает так: вначале в NEnvi помещается список всех имеющихся буковок дисков (FDRV NEnvi=*:). Потом по этому списку проверяется наличие файловой системы (FDRV *vol ...). При её наличии буковка добавляется в список %AllDrv%. После отработки в %AllDrv% находится перечень всех "рабочих" буковок, который можно использовать, например, для операции поиска на диске (без опасности обращения к поврежденному диску или диску-пустышке). Этот список выводится на экран MESS %AllDrv%. Как можно использовать этот скрипт? Например, нам нужно найти 2k10\Programs-2k10\Win2k78.bat. Тогда после скрипта организуем поиск и запуск: FORX * %AllDrv%,DEnvi,IFEX %DEnvi%\2k10\Programs-2k10\Win2k78.bat,TEAM EXEC %DEnvi%\2k10\Programs-2k10\Win2k78.bat|EXIT - Эта строчка перебирает все буковки из списка в %AllDrv%. Если на конкретном диске найден Win2k78.bat, тогда запуск бантика и выход из перебора буковок.Получить информацию о файле (разрядность х32/х64, версия файла, время, атрибуты)ENVI XFile=%Path%\MyFile.exe TEAM GETF %XFile%,0x3C#2,TEnvi|MSTR TEnvi,DEnvi=<1><2>%TEnvi%|CALC -base=16 DEnvi=%DEnvi%*256+%TEnvi%+0x19|GETF %XFile%,%DEnvi%#1,TEnvi|FIND $%TEnvi%=0x02,CALC #Razr=64!CALC #Razr=32 MESS %XFile% - разрядность х%Razr% SITE ?TEnvi=FVER,%XFile% MESS %XFile% - версия %TEnvi% SITE ?NEnvi,TEnvi,DEnvi=FTIME,%XFile% MESS %XFile% - время создания файла %NEnvi%, время записи файла %TEnvi%, время последнего доступа %DEnvi% SIZE TEnvi=%XFile% MESS %XFile% - размер файла %TEnvi% байт SITE ?A,H,R,S=FATTR,%XFile% MESS %XFile% - атрибуты файла A=%A% H=%H% R=%R% S=%S%Небольшой пример, какую информацию о накопителе можно получить с помощью команды PART (в переменной SelDsk указываем букву диска)ENVI SelDsk=C: PART -hextp -phy list drv %SelDsk%,TEnvi MSTR DiskN=<9>%TEnvi% MESS PartID, Type, BootMark, BaseOffset, Size, HideSectorNum, End, DrvLetter,DiskID\n%TEnvi% PART -devid list disk %DiskN%,TEnvi MESS DiskID, Size, CylinNum, HeadNum, SetorNum, SectorSize, MediaType, Sign(Hex), BusType, PartType, RemvFixDisk.\n%TENVI% FORM TEnvi=%SelDsk% MESS Type Disk (Fixed HDD/USB Drive/USB Flash)\n%TEnvi% EXITПолучаем в текст .\HDD_data.txt инфу о накопителях, с комментариями что и как```````Для облегчения понимания комментов убрал TEAM (это команда, позволяющая размещать несколько команд в одну строчку, разделяя их символом "|"). Применение TEAM позволяет уменьшить кол-во строчек за счет увеличения их длины `==================================================== ENVI^ EnviMode=1 `определяем работу с локальными переменными SET$ &NL=0d 0a `присваиваем &NL код перевода строки FDRV &Drvs=*: `получаем в переменную &Drvs список всех букв дисков в системе (C: D: E: ...) FORX * %&Drvs%,&D, `начинаем перебор буковок, обрабатываемая буква в переменной &D {* PART list drv %&D%,&&V `получаем в переменную &&V инфу о смонтированном на эту букву накопителе, в одну строчку: PartID, Type, BootMark, BaseOffset, Size, HideSectorNum, End, DrvLetter, HD number | выглядит примерно так: 3 12 1 474384798720 25720450560 926532810 500105249280 D: 1 MSTR &&hd=<9>%&V% `из всей полученной инфы используем только номер накопителя, 9-е значение |в примере - это 1 (hd1) ^SET &Drv[%&hd%]=%%&Drv[%&hd%]%%%&D% `присваиваем переменной Drv [с привязкой к номеру текущего накопителя hd0] используемую букву } `повторяем для следующей буквы диска, в результате получим привязку всех буковок к номеру накопителя, например, &Drv0=C:F:G: PART list disk,&&AllDsk `получаем в переменную &&AllDsk инфу о всех накопителях (примерно так будет 0 1 2 3 4, если в системе 5 накопителей) ENVI &&FindLIST= `очищаем переменную &&FindLIST SET &D1= `очищаем переменную &D1 FORX * %&AllDsk%,&Find, `начинаем перебор списка накопителей %&AllDsk%, текущее значение в переменной &Find {* PART -devid list disk %&Find%,&DskID `получаем в переменную &DskID инфу о накопителе с номером %&Find%, в одну строчку: DiskID, Size, CylinNum, HeadNum, SetorNum, SectorSize, MediaType, Sign(Hex), BusType, PartType, RemvFixDisk, DiskInfo | выглядит примерно так: 0 500107862016 60801 255 63 512 12 CE3BDCAA 3 MBR F IDE\DISKST500DM002-1BC142_______________________JC4B____\5&1D4241CA&0&0.0.0 MSTR &&hd,&&SZ,&&Bus=<1><2><9>%&DskID% `извлекаем 1-е, второе и девятое слова из инфы, это будет соответственно номер харда, размер и шина SED &DskID=1,DISK\&VEN_, ,%&DskID% `заменяем первую найденную комбинацию "DISK\&VEN_" на " " (пробел), чистим "мусор" с головы SED &DskID=1,IDE\\DISK,1 ,%&DskID% `заменяем первую найденную комбинацию "IDE\\DISK" на " " SED &DskID=1,\&PROD_,_,%&DskID% `заменяем первую найденную комбинацию "\&PROD_" на "_" MSTR &DskID=<-1>%&DskID% `присваиваем переменной &DskID только последнее слово (отсекаем мусор спереди) SED &DskID=1,\&REV, ,%&DskID% `заменяем первую найденную комбинацию "\&REV" на " " (пробел), чистим "мусор" с хвоста SED &DskID=1,\\, ,%&DskID% `заменяем первую найденную комбинацию "\\" на " " SED &DskID=1,___, ,%&DskID% `заменяем первую найденную комбинацию "___" на " " MSTR &DskID=<1>%&DskID% `присваиваем переменной &DskID только первое слово (отсекаем мусор сзади) SED &DskID=8,_, ,%&DskID% `заменяем все "_" на пробелы (для красоты) FIND $%&DskID%=,SET &DskID=- `если инфа о накопителе не получена, тогда прочерк "-" IFEX #%Bus%=2, SET Bus=(ATAPI) `анализ шины >> ATAPI IFEX #%Bus%=3, SET Bus=(ATA) `анализ шины >> ATA IFEX #%Bus%=7, `анализ шины - USB, но пока не известно - Flash или HDD { SET Bus=(USB_HDD) `анонсом присвоим шине значение USB-HDD ^SET &TEnvi=%%&Drv[%hd%]%% `получаем буквы дисков для этого накопителя FORM &TEnvi=%&TEnvi% `получаем в TEnvi тип устройства FIND $%&TEnvi%=DRIVE_USBFLASH,SET Bus=(USB_Flash) `если устройство USB_Flash, тогда обзываем его флешкой )) } IFEX #%Bus%=11, SET Bus=(SATA) `анализ шины >> SATA IFEX #%&SZ%>2G, @TEAM CALC &SZ=%&SZ%/1G#1|SET SZ=%&SZ%G! IFEX #%&SZ%>2M, @TEAM CALC &SZ=%&SZ%/1M#1| SET SZ=%&SZ%M `Пересчет байтов в кило/мега/гигабайты. #1 задаёт точность отображения результата (один знак после запятой) ^SET &FindLIST=%&FindLIST%%&NL%%&Find%,%&Bus%,%&SZ%,%&DskID%,%%&Drv[%hd%]%% `после перевода строки (код в %&NL%) добавляем строчку с данными харда в общий списочек &FindLIST, данные: номер накопителя, шина, размер, название, буквы смонтированных разделов } FILE .\HDD_data.txt `удаляем файл .\HDD_data.txt `удаляем файл .\HDD_data.txt (если имеется) WRIT .\HDD_data.txt,$*,%&FindLIST% `записываем в файл .\HDD_data.txt наш списокЕщё немного обновил скрипт создания списка разделов, теперь имя накопителей как в диспетчере устройств + отображает невидимые разделы флешкиTEAM ENVI HdData=|SET$ &NL=0d 0a|PART list disk,AllDrv FORX* %AllDrv%,CurDrv, {* TEAM PART -devid list disk %CurDrv%,DskNam|MSTR HdNum,HdSize,HdBus=<1><2><9>%DskNam% TEAM REGI $HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum\%CurDrv%,DskNam TEAM SED *ni DskNam=1,Disk\&Ven_\&Prod_, ,%DskNam%|SED *ni DskNam=1,Disk\&Ven_, ,%DskNam% TEAM SED *ni DskNam=1,\\DISK, ,%DskNam%|MSTR DskNam=<-1>%DskNam%|SED *ni DskNam=1,&Rev_, ,%DskNam% TEAM SED *ni DskNam=1,\&Prod_,_,%DskNam%|SED DskNam=1,___, ,%DskNam% TEAM SED DskNam=1,\\, ,%DskNam%|MSTR DskNam=<1>%DskNam%|SED DskNam=6,_, ,%DskNam% FIND $%DskNam%=, SET DskNam=Unrecognized Drive IFEX #%HdSize%>2G, @TEAM CALC HdSize=%HdSize%/1G#1|ENVI HdSize=%HdSize%G!IFEX #%HdSize%>2M,@TEAM CALC HdSize=%HdSize%/1M#1|ENVI HdSize=%HdSize%M IFEX #%HdBus%=2,ENVI HdBus=(ATAPI)!IFEX #%HdBus%=3,ENVI HdBus=(ATA)!IFEX #%HdBus%=11,ENVI HdBus=(SATA) IFEX #%HdBus%=7, TEAM ENVI HdBus=(USB_HDD)|DISK TEnvi,%CurDrv%,1|FORM TEnvi=%TEnvi%|FIND $%TEnvi%=DRIVE_USBFLASH,ENVI HdBus=(USB_Flash) ENVI HdData=%HdData%%&NL%HD%HdNum%,%HdBus%,%HdSize%,%DskNam% PART list part %CurDrv%,AllPrt FORX* %AllPrt%,CurPrt, {* TEAM SED TEnvi=1,=,1,%CurPrt%|IFEX $%Tenvi%<1,EXIT - TEAM PART list part %CurDrv%#%CurPrt%,TEnvi|SED CurPrt=1,=,,%CurPrt% TEAM MSTR PtSize,PtLet=<5><8>%TEnvi%|FIND $%PtLet%=,ENVI PtLet=* ENVI HdData=%HdData%|%CurPrt%,%PtLet%,%PtSize% }} FILE .\HDD_data.txt WRIT .\HDD_data.txt,$*,%HDdata% `MESS %HDdata% EXITОбмен двух разделов на двухраздельной флешке (меняем местами видимый и невидимый разделы местами)ENVI DiskN=6 //В переменной DiskN указываем номер накопителя PART -phy -super -force -up -hup -swap:2 %DiskN%#1Скрипт для использования Primo RAM disk под х86 с комментариямиREGI #HKLM\system\ControlSet001\Services\FancyRd\Parameters\EnableIM=0 //Предварительно запрещаем использование невидимой памяти IFEX MEM=?,MemA //Получаем размер видимой памяти TEAM EXEC* TEnvi=!cpu64.exe Y|LPOS TEnvi=CPU is 64,1,%TEnvi% //Запускаем утилиту cpu64 для проверки поддержки системой х64 адресации, проверям наличие в выхлопе "CPU is 64" FIND MEM>2560,IFEX $%TEnvi%=5,REGI #HKLM\system\ControlSet001\Services\FancyRd\Parameters\EnableIM=1 //Если доступной памяти больше 2560Мб и при этом есть поддержка х64 адресации, тогда разрешаем использование невидимой х86 памяти TEAM EXEC =!frsetup.exe -i1 "X:\Windows\System32\drivers\\"|WAIT 200|EXEC =!frsetup.exe //устанавливаем драйвер при помощи штатного инсталятора Primo frsetup.exe, драйвера fancyrd.* заранее положены в каталог System32\drivers FORX * 1 2 3 4 5 6 7 8,,TEAM EXEC* MemH=!rxprd.exe mem|FIND $%MemH%=,WAIT 300!EXIT FORX //Пробуем получить информацию о невидимой памяти средствами rxprd.exe, если не получается - ждём 300мс и повторяем до 8 раз TEAM SED MemH=0,/, ,%MemH%|TEAM MSTR MemH=<7> %MemH%|CALC MemH=%MemH% //Получаем размер невидимой памяти из выхлопа rxprd.exe mem IFEX $%MemH%<%MemA%,CALC MemA=%MemA%-%MemH%!CALC MemA=128 //Сравниваем количество невидимой и видимой памяти TEAM ENVI TEnvi=ntfs|CALC #DSize=(%MemA%-128)*6/10+%MemH% //Выбираем файловую систему ntfs и рассчитываем размер РАМ-диска. IFEX $%DSize%<256,TEAM ENVI TEnvi=fat|CALC DSize=4|PATH X:\Temp //Если рассчитанный размер меньше 256Мб, тогда выбираем файловую систему fat и размер 4Мб (только для монтирования WIM-ов), создаём каталог Temp на Х:\ EXEC =!rxprd.exe add -n %DSize% -t dio -d B -v -i -dmm=COMPACT -f %TEnvi% -c 4KB -l RAMDisk -X -N -T -s //Создаём РАМ-диск, форматируем его FORX * 1 2 3 4 5 6 7 8,,IFEX B:\,EXIT FORX!WAIT 200 //Ожидаем окончание создания и форматирования. IFEX X:\TEMP,TEAM ENVI PT=X:\TEMP|FILE --force B:\Temp!TEAM ENVI PT=B:\TEMP|PATH %PT% //Если есть X:\Temp (у нас слишком мало памяти и РАМ-диск 4Мб), тогда назначаем именно X:\Temp в качестве %Temp% TEAM EXEC =!setenv.exe -m Temp %PT%|EXEC =!setenv.exe -m Tmp %PT% //На всякий случай всем запущенным процессам также указываются выбранный %Temp% и %Tmp% TEAM REGI HKCU\Environment\TEMP=%PT%|REGI HKCU\Environment\TMP=%PT% REGI HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\TEMP=%PT% REGI HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\TMP=%PT% //Прописка %TEMP% и %TMP% в реестре TEAM ENVI $TEMP=%PT%|ENVI $TMP=%PT%|ENVI //Указание переменных %TEMP% и %TMP% как системных ------------------------------------------------------------------------------------------------------------ *** Замечания. 1. Использование невидимой памяти на системах без поддержки х64 адресации - это 100% BSOD. 2. Драйвера Primo RAM disk, в принципе, можно и в систему интегрировать. Но обязательно дефолтное значение EnableIM=0 3. При небольшом количестве памяти лучше в качестве %TEMP% использовать системный диск Х:\, это позволяет эффективнее использовать память, что и отображено в скрипте. Если памяти мало, тогда РАМ-диск создаётся только под монтирование WIM-набора программ. 4. Если скрипт запущен командой MAIN и PECMD используется в качестве главной оболочки, тогда назначение %TEMP% и %TMP% с помощью setenv.exe, как и прописка в реестре, необязательны. Поскольку в таком случае всё, что запущено после выполнения скрипта, будет запущено из PECMD и унаследует переменные сессии PECMD.Демонстрационный скрипт: меню в трееCALL @WIN1 //Запуск меню _SUB WIN1,L-10T-10W1H1,My tray menu,,#2,- //Создаем в трее меню с именем "My tray menu" и иконкой #2 ENVI &WINID1=%__WinID% //Присваиваем переменной &WINID1 идентификатор нашего меню MENU Menu2,Create LNK (devmgmt),CALL CrLnk //Создаем пункт меню "Создать ярлык" MENU - //Второй пункт меню (разделитель) MENU ,Load data from LNK (devmgmt),CALL LdLnk //Пункт меню "Прочитать данные из ярлыка" MENU - //Ещё раз разделитель MENU Menu1,Exit, KILL @@%WINID1% //Последний пункт меню, выход из меню _END _SUB CrLnk LINK !%Desktop%\Device Manager (test),mmc.exe,devmgmt.msc,explorer.exe#4 //Создание ярлычка "Device Manager" на рабочем столе с иконкой 4 из explorer.exe _END _SUB LdLnk LINK ? %Desktop%\Device Manager (test),DestPath,ExecParam,IconPath#IconIdx,Rem,StartPos,HK,DspMark //Получаем в переменные все данные из ярлычка MESS DestPath=%DestPath%\nExecParam=%ExecParam%\nIconPath=%IconPath%\nIconIdx=%IconIdx%\nRem=%Rem%\nStartPos=%StartPos%\nHK=%HK%\nDspMark=%DspMark% //Вывод полученных данных _END ------------------------------------------------------------------------------
Скрипт для создания ярлычков для файлов с несколькими путями для обработки, разделитель #ENVI ScanDir=XMPE\Programs#2k10\Programs-2k10#_WIN\Utilites //Указываем пути, разделителем служит символ "#" (в пути его быть не должно), поддерживаются пути с пробелами ENVI ScanDpt=3 ENVI ScanTyp=exe cmd bat ENVI PathLnk=B:\lnk ////////////////////////////////////////////////////////////// IFEX %PathLnk%,!PATH %PathLnk% CALC #QEnvi=1 //Начнём с первого пути LOOP #%QEnvi%=%QEnvi%, //Вечный цикл )) {* MSTR -delims:# SEnvi=<%QEnvi%>%ScanDir% //Организуем перебор вариантов пути с разделителем "#" FIND $%SEnvi%=,EXIT LOOP!CALC #QEnvi=%QEnvi%+1 //Если пути закончились, выход! А иначе - следующий путь FORX @\%SEnvi%,TEnvi,0, {* FORX* %ScanTyp%,DEnvi, {* ENVI SCAN=FORX /S:%ScanDpt% %TEnvi%\*.%DEnvi% %SCAN%,XEnvi,0,TEAM FNAM NEnvi=%XEnvi%|LINK %PathLNK%\%NEnvi%,%XEnvi% }}} ----------------------------------------------------------------------------------------- Количество путей и количество расширений не ограничено. Как, при желании, и глубина сканирования. Главное - не перестараться, чтобы не было "всё небо в попугаях" (рабочий стол).Скрипт для создания ярлычков для файлов с несколькими путями для обработки, разделитель пробелENVI ScanDir=XMPE\Programs 2k10\Programs-2k10 _WIN\Utilites //Указываем пути, разделителем служит пробел, поэтому не поддерживаются пути с пробелами ENVI ScanDpt=3 ENVI ScanTyp=exe cmd bat ENVI PathLnk=B:\lnk ////////////////////////////////////////////////////////////// IFEX %PathLnk%,!PATH %PathLnk% CALC #QEnvi=1 LOOP #%QEnvi%=%QEnvi%, {* MSTR SEnvi=<%QEnvi%>%ScanDir% FIND $%SEnvi%=,EXIT LOOP!CALC #QEnvi=%QEnvi%+1 FORX @\%SEnvi%,TEnvi,0, {* FORX* %ScanTyp%,DEnvi, {* ENVI SCAN=FORX /S:%ScanDpt% %TEnvi%\*.%DEnvi% %SCAN%,XEnvi,0,TEAM FNAM NEnvi=%XEnvi%|LINK %PathLNK%\%NEnvi%,%XEnvi% }}} ----------------------------------------------------------------------------------------- Количество путей и количество расширений не ограничено. Как, при желании, и глубина сканирования. Главное - не перестараться, чтобы не было "всё небо в попугаях" (рабочий стол). -Предлагаю все обсуждения вести в этой теме, а тут постить только готовые скрипты.
|
Отправлено: 26-Jan-2021 15:15
(after 7 months 21 day)
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Пример подсказки (более компактный)win _SUB win,W300H200 ITEM k1,L20T20W100H30,88,TEAM *| MESS 123 ENVI @k1.MSG=0x02A1: CALL m , подсказка ENVI @k1.MSG=0x02A3: TIPS - ITEM k2,L140T20W100H30,99,* ENVI @k2.MSG=0x02A1: CALL m , 123456789 ENVI @k2.MSG=0x02A3: TIPS - LABE st,L20T120W128H48,Подсказка,* ENVI @st.MSG=0x02A1: CALL m , abcde ENVI @st.MSG=0x02A3: TIPS - _END _SUB m ENVI @@Cur=?&x;&y ^TIPS %*,100000,0,@AL%&x%T%&y% _END
Last edited by avalat on 2021-07-16 23:29; edited 3 times in total
|
Отправлено: 28-Jan-2021 08:33
(after 1 day 17 hours)
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Левый и правый клик по кнопкеwin _SUB win,W300H200 ITEM k1,L30T20W100H30,Кнопка 1,mess Левый клик ENVI @k1.MSG=0x0204: MESS Правый клик ITEM k2,L165T20W100H30,Кнопка 2,ENVI @st= Левый клик ENVI @k2.MSG=0x0204: ENVI @st= Правый клик ENVI @k2.MSG=0x02A3: ENVI @st= LABE st,L90T120W128H30,,,,15 _END
|
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Кто то спрашивал про цветные кнопки... Псевдокнопкиwin _SUB win,W300H200 LABE+ -center s,L30T20W100H25,Кнопка 1,mess желтый,0x330B97#0x9AF8F4 ,15 // цвет текста#фона LABE+ -center s2,L165T20W100H25,Кнопка 2,mess зеленый,0xB2170A#0x9AF89A ,15 _END Размеры шрифта и "кнопок" конечно придётся подбирать самому
|
Отправлено: 01-Feb-2021 12:50
(after 2 days 21 hour)
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Выплывающее меню на иконке в окне&win _SUB &win,W300H200,test,,,,,-nosysmenu IMAG im,L255T130W25H25,%systemroot%\explorer.exe#50,CALL @--popmenu m _END _SUB m MENU ,Справка,mess Справка MENU ,Рабочий стол,EXEC $%desktop% MENU ,WinDir,EXEC $%windir% MENU - MENU ,О программе,mess OK MENU - MENU ,Выход,KILL \ _END
|
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Координаты курсора мыши и перетаскиваемого окнаwin _SUB win,W400H300,, call m call n _END _SUB m ENVI @@Cur =? x; y ENVI @this.MSG=0x0200:m ENVI @this=Курсор %x% %y% _END _SUB n ENVI @this.MSG=0x0047:pp _END _SUB pp ENVI @this.POS=?xx:yy ENVI @this=Окно %xx% %yy% _END
|
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Пример оконного и контекстного менюкодwin _SUB win,W364H212,Оконное меню, MEMO*+ mem,L1T1W355H175,\nПример,,0x20,0x000000#0xFFFFFF,13 MENU -bar -sub m,Файл, MENU -bar -sub mm,Правка, MENU -bar -sub mm3,Вид, ENVI @mem.MSG=0x0204:CALL@--popmenu mm _END _SUB m MENU ,Открыть,call v MENU ,Сохранить,,1 MENU -sub m1,Печать, MENU - MENU Menu14,Выход,KILL \ _END _SUB m1 MENU ,Черно-белая,,1 MENU ,Цветная,,1 _END _SUB mm MENU ,Копировать,ENVI @mem.SENDMSG=0x0301 MENU ,Вставить,ENVI @mem.SENDMSG=0x0302 MENU ,Вырезать,ENVI @mem.SENDMSG=0x0303 MENU - MENU ,Отменить,ENVI @mem.SENDMSG=0x0304 _END _SUB mm3 MENU ,Перенос по словам,,1 MENU ,Настройки,MESS Настройки _END _SUB v TEAM BROW bb,,,txt|READ %bb%,*,tx|ENVI @mem=%tx% _END
|
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Простенькая помогалка, как пример запуска из ресурса В секции EXEDATA создать ресурс 100 и назначить его на mpress.exe. ( В Restorator-е можно просто перетащить на 100 )win _SUB win,W360H115,MPressGUI,,,,,-top EDIT= ed,L10T10W326H20,"",,0x100,0x000000#0xDAF0F1 LABE ,L10T40W200H50, перетащите файл...\n старый сохраняется в *.exe.bak LABE+ -center,L236T40W100H27,MPress,CALL st,0xDAF0F1#0x5050C7,18 _END _SUB st SIZE s=%ed% IFEX $%s%=0,TEAM MESS-icon Файл не найден|ENVI @ed=|exit EXEC* -wait --exe:#100 -b &V=!#100 -b %ed% MESS-icon Файл упакован _END
|
avalat
- Longevity: 9 years
- Posts: 468
- REPUTATION:127[+] [-]
|
Пример поиска по трём буквам из "массива" <mass> Буквы в любом месте - AcrobatPro -AmmyAdmin Без учёта регистракодENVI^ ENVIMode=1 win _SUB win,W300H200,поиск, EDIT ed,L25T25W55H30,,,,0x000000#0xDAF0F1,20 ITEM ,L25T75W150H30,Поиск,CALL f _END _SUB f STRL str=%ed% IFEX $%str%<>3,TEAM MESS-icon Три буквы |ENVI @ed=|EXIT ENVI mass=ABBYY ac-10 AccountProfileFixer AccountTuner AcrobatPro ActStatus AddStore AdobeMasterCollection2020.torrent AdobeReader AdvancedBootMenu AdvancedIPScanner AdvEFSRecovery AdvOfficePassRecovery AdvPDFPassRecovery AdvUser AdwCleaner AdwCleaner6_XP Aida64 AirExplorerPortable AlReader2 AmmyAdmin AnVir AnyDesk AOMEIBackupper AOMEIPartAssist ASBenchmark AsTrustedInst AudioRecorder AusLogicsBoostSpeed AuslogicsDuplicateFileFinder AutoassignLetterFix AutoBackUp AutoCAD2020.torrent AutorunOrganizerPortable Autoruns AvastFree AVCLR AVTOOL Backuper BalancedPower Bandicam BatteryMonitor BatToExeConverter BCDBootGUI BeyondComparePortable BIOSCodes BitLockerOff BitLockerTE BOOTICE BootSectGui BSPlayerPRO BurnInTest FORX* %mass%,k, ENVI i=1 LOOP %i%<%k%, { MSTR s=<%i%>%mass% ENVI ut3=LPOS a=%ed%,,%s% %ut3% IFEX $%a%>0,MESS %s% CALC i=%i%+1 } _END
|
Page 1 of 7
Current time is: 06-Dec 01:40
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
|
|