[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
Какую функцию выполняет "-user" ?
Возможно, ключ --user обозначает запуск РЕ от имени пользователя, а не от имени системы? В какой РЕ такой ключик подсмотрел?

Перевёл описание MAIN

MAIN(*) (--user) (--wait) (FilePath|CMD begin with TEAM or EXEC)
Чтобы инициализировать рабочий стол, нажмите Ctrl+Alt+Del и создайте новый процесс для выполнения функций LOAD.
* означает, что демон скрывается немедленно (скрыть процесс в памяти???).
--user пользовательский уровень.
(FilePath) указать путь к файлу конфигурации для инициализации, если указанный файл не существует и сценарий #102 не пуст, тогда будет выполнен сценарий #102.
MAIN %SystemRoot%\System32\PECMD.INI
• MAIN предназначена для создания процесса LOAD, который не завершается после выполнения скрипта. Производит перехват функции «ExitWindowsEx».
• Рекомендуется использовать напрямую PECMD MAIN вместо PELOGON.EXE.
• Команда LOAD автоматически завершит работу после выполнения скрипта. Смотрите раздел комманды LOAD.

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
conty9
72629Возможно, ключ --user обозначает запуск РЕ от имени пользователя, а не от имени системы?
Да, это именно то, что надо получить, я уже разобрался с этим.
Скрипт предназначен для смены пользователя, а так он запускается через MAIN , ключ необходим.
Решил сделать свой конструктор на базе Win10XPE, вот и пришлось разобраться с PeCmd подосканальнее.
Не могу сказать, что я в восторге от PeCmd, слишком уж мудреный синтаксис, но некоторые уникальные функции компенсируют этот недостаток.

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
conty9
Условия, не понятно, как работают, у каждого команды по разному.
К примеру, нужно ожидание окончания процесса, сделал так.
set flag=1
loop #%flag%=1 , find notepad.exe , set flag=0
Понимаю, что должно быть более простое решение, для find имя процесса воспринимается как условие, почему с loop это не проходит?
Или нужны танцы с бубнами вокруг спецсимволов?

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
nikzzzz, я не понял, что не устраивает? Команда FIND производит поиск. Не нашла - погнали дальше. Хочешь повторить - твоё право. Я бы иначе сделал, чтобы зазря не загружать проц - проверка каждые 200мс.
LOOP #1=1,FIND notepad.exe,EXIT LOOP!WAIT 200
Если нужно подождать ограниченное время - тогда проще задействовать FORX. В примере - ждём до 5 сек
FORX* 1 1 1 1 1 1 1 1 1 1,,FIND notepad.exe,EXIT FORX!WAIT 500
Единственно: не забываем учитывать общий синтаксис первой команды, чтобы к моменту выполнения той же FIND синтаксис был окончен. Иначе запятая после FIND интерпретируется как запятая, разделяющая ключи первой команды, и всё будет работать совсем не так. Т.е., желательно, хотя бы до проверки, выносить в подпрограмму или в скобки:
FORX* 1 1 1 1 1 1 1 1 1 1,,
{* FIND notepad.exe,EXIT FORX!WAIT 500
}
Вот пример неверно интерпретированной команды. Первая строка - всё ОК, поскольку синтаксис завершён - есть условие, запятая и "!" (FIND ***, ***! ***). Вторая строка - синтаксис на момент FIND explorer.exe не завершён. Поэтому !MESS Notepad будет восприниматься как концовка команды FIND notepad.exe
FIND notepad.exe,MESS notepad!FIND explorer.exe,MESS Explorer
FIND notepad.exe,FIND explorer.exe!MESS Notepad

[Цитировать]

    mat.86
  • 14134
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Есть ли функция пропустить копирование если файл занят или уже существует ?

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 3 месяца
  • Сообщений: 460
  • Репутация:127

    [+] [-]
mat.86, попробуй так
FORX \путь\файл,f,0,                                //   f=1 если файл существует, f=0 если файла нет
IFEX $%f%=1,!FILE abc =>\путь\файл      // если существует (=1)  не копировать что-то там...

[Цитировать]

    mat.86
  • 14134
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
avalat, в чем собственно вопрос, у меня по сценарию с флэшки должны копироваться файлы из папки на другой диск, на флэшке в одной подпапке есть поврежденный файл и на нем все копирование стопорится. Вот я и хотел задать команду, если файл занят или уже существует в папке назначения пропустить и копировать дальше. Я просто раньше делал распаковку командой из архива с помощью 7zip, там можно задавать пропустить если файл есть или перезаписать. Теперь подумал что это не одно и тоже пропустить\перезаписать если файл есть и пропустить если невозможно скопировать.
А ваш способ кстати скопировал с перезаписью существующего файла , abc - это ж путь откуда копировать?
Еще попутно спрошу может кто знает, есть ли возможность монтировать папку с флэшки как жесткий диск со своей буквой?

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 3 месяца
  • Сообщений: 3618
  • Репутация:127

    [+] [-]
72812 есть ли возможность монтировать папку с флэшки как жесткий диск со своей буквой?
SUBST

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
Монтирование папки D:\My как диска B:
SUBJ B:,D:\My

Перевёл описание FILE

FILE [-simpleprogress|-progress] [-force] [-file] [-m] [-q] [-]FilePath[<operator>DestPath]
FILE FilePath>>NewName (без родительского каталога) // имитация команды Ren (Rename), для переименования файла без смены каталога.
Команда для удаления, копирования, перещения или переименония файлов или папок.
--m несколько файлов, разделяемых символом ";", - to end.
-simpleprogress отображать индикатор выполнения
-progress отображать индикатор выполнения и имя файла
--file работать только с файлом
-force принудительное удаление (удалить всё что можно)
-q без предупреждения
-delme удалять заблокированные файлы или каталоги
-rd удалять каталоги
• FilePath путь к исходному файлу. Можно использовать подстановочные знаки "?" или "*" (относится к удалению, копированию и перемещению файлов и каталогов)
• Operator "->", "=>", ">>" соответствует перемещению, копированию и переименованию файла или каталога.
Отсутствие оператора указывает на операцию удаления.
При переименовании с помощью ">>" убедитесь, что в FilePath и NewName нет никаких подстановочных знаков. Кроме того, должен быть только один FilePath, а NewName точно отсутствует в каталоге с оригинальным файлом.
В принципе, оператор "->" тоже может быть использован для переименования.
• DestPath путь назначения для перемещения или копирования исходного файла и каталога. Это должно быть определённое имя файла и каталога без подстановочных знаков (* или ?).
FILE %SystemRoot%\INF\*.INF=>%TEMP% //скопировать все INF-файлы из каталога %SystemRoot%\INF в %TEMP%
FILE pphk->pphk22 //
FILE -delme %CurDir% //удалить заблокированный каталог %CurDir%
FILE --m x.log;x3.log=>FOLDER\x11.log;HELP\x33.log //скопировать x.log в FOLDER\x11.log и x3.log в HELP\x33.log
• Если система запускается с RAMDISK, некоторые бесполезные файлы (например, NTOSKRNL.EXE) могут быть удалены после загрузки, чтобы освободить доступное для записи пространство RAMDISK.
• При перемещении и копировании, если указан только каталог, указанный каталог будет скопирован или перемещен только в место назначения, как показано в примере 2.
• При работе с файлом операция не будет выполнена, если отсутствует целевой каталог, как показано в примере 3.
• Операция будет прервана, если указанный целевой каталог или файл не существует (например, отсутствующие "pphk" и "pphk22" в примере 2)
• Чтобы переместить папку в новую, обратитесь к примеру 2 (FILE pphk->pphk22)
• За исключением переименования, источник и пункт назначения могут быть множественными, разделенными знаком "?".
• Если имеется несколько путей назначения, количество источников должно быть таким же (пример 4). Т.е., они должны соответствовать друг другу. Целевой каталог указывается собственным именем, а не именем родительского каталога.

[Цитировать]

    mat.86
  • 14134
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Ander_73, conty9, хотел обмануть судьбу. Иногда попадаются старые пк на которых мало памяти и не обойтись без файла подкачки при загрузки с windows pe. Но к сожалению создать файл подкачки возможно только на жестком диске, на флэшке же, подкачка создаваться отказывается, по крайней мере известными мне способами. Я подумал об одном еще варианте, что если обмануть систему, смонтировав папку из этой флэшки как жесткий диск со своей буквой, но к сожалению при монтировании вышеупомянутыми способами, (SUBST я тоже пробовал ранее) и еще несколькими программами (скорее всего оболочками для SUBST) папка монтируется тоже как съемный накопитель, а не жесткий диск. Единственный способ которым можно такого добиться, это смена драйвера флэш накопителя на другой при котором он будет восприниматься системой как жесткий диск, способ описывался неоднократно в сети и на usbtor в том числе. Но такой способ не поддается "автоматике", а каждый раз производить все вручную... ну вы понимаете. Еще один способ сделать флэшку внешним жестким диском, на уровне прошивки контроллера, но этот способ к сожалению не универсальный ac .
Добавлено через 7 минут 17 секунд:
72821
• За исключением переименования, источник и пункт назначения могут быть множественными, разделенными знаком "?".
В примере знак ;

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
mat.86,
72827хотел обмануть судьбу.
Я писал такой скрипт под XP сборку.
Принцип прост - на флэшке создается файл нужного размера, он монтируется с помощью ImDisк как виртуальный диск, на котором свободно создается файл подкачки.
Если нужен, могу поделиться.

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
Я писал такой скрипт...
На базе PeCMD можно тоже подобный сделать...
FORM -free TEnvi=D:\ `Получить в переменную количество свободного места на D:\
PUTF %Temp%\MyFile.swp,0,*128M 0x00 0x00 `Создать в папке %Temp% файл MyFile.swp размером 128M

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 3 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
conty9
Ты немного не правильно понял задачу, нужно на флэшке создать файл нужного размера, смонтировать его с помощью imdisk как виртуальный диск, отформатировать его и, уже на нем создать файл подкачки.
Вот только как его подключить, на Autoit это можно сделать вызвав api функцию, можно ли это сделать в PeCmd?

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
nikzzzz, я всё верно понял. Только не учёл, что ImDisk сам создаст нужный файл.
imdisk.exe -a -o hd -o rw -f K:\PageFile.sys -m z: -s 134217728 -p "/fs:Fat /x /q /y /v:PageFile /force
Подключить файл подкачки? Запросто.
PAGE Z:\Pagefile.sys 16 128 `Подключить файл подкачки %DRIVE%\Pagefile.sys с минимальным размером 16Мб и максимальным 128Мб.
Есть ещё возможность монтировать всякое средствами команды MOUN. Изначально она предназначалась для монтирования WIM-ов. Но теперь... Я пока не разобрался, но вот примеры:
MOUN -udm -findboot -mall -mhide -u+ -nbrd -Checkfile:H3PE/WINPE.INI -Checkfile:BOOT/H3_3PEIN.WIM -ret:&&v \\.\PhysicalDrive* B-
MOUN -udm -mhide -udfs -udm- -nbrd -udimg:H3PE/OP.IMG -Checkfile:WINPE.INI -ret:&&v \\.\PhysicalDrive* ZVUWTSRQPONMLKJIH
MOUN -udm -check -udfs -udm- -nbrd -udimg:udext.img \\.\PhysicalDrive* B-
MOUN -vhd D:\A3.VHD,B:

-

Описание команды RAMD

RAMD [P percentage of memory] [LMini] [HMax] [FSurplus] <===старый формат
RAMD <DrvName>[,DiskSize][,DiskFormat][,DrvLetter][,DiskVol][,CompMark][,Opt] <===новый формат
RAMD ImDisk*[VarName] [*[Offset]*Size*[Ctrl]*Devi] [--[f]ins [-rmeu-]] -a -t Type -m LodPint
[-n][-o op1[,op2 ...]] [-f|-F SrcFileDeviName][-s Size] [-b Offset] [-v PartID]
[-S SectSz] [-u ImDiskID] [-x 1 TrackSectNum] [-y 1 CylinTrackNum] [-p "format Param"]
RAMD ImDisk*[VarName] -e [-s Size] [-o opt1[,opt2 ...]] [-u ImDiskID | -m LoadPoint]
RAMD ImDisk*[VarName] -d|-D [-u ImDiskID | -m LoadPoint]
RAMD ImDisk* -BD -m Driver [--remove] [--nbrd] <===уведомить, чтобы добавить / удалить драйвер
RAMD ImDisk*[VarName] -l [--id] [-u ImDiskID | -m LoadPoint] <===ImDisk полный формат
RAMD ImDisk* -gui <===ImDisk графический режим
Чтобы установить размер RamDisk и вернуть результат в переменную. [См. ImdiskHelp.txt] LoadPoint: буква диска или каталог
• DrvName:Ramdriv or ImDisk единицей измерения для Max и Mini является MB.
• DiskSize единица измерения - МБ, определяется как процент доступной памяти Pxx, не меньше значения Lyy (минимум) и не больше Hzz (максимум), т.е., xx: процент доступной памяти, yy: минимум, zz: максимум.
• DiskFormat поддерживаются файловые системы FAT, FAT32 и NTFS. Если указано, диск будет отформатирован в соответствии с параметрами, если отсутствует - не форматируется (будет RAW).
• DrvLetter буква диска, относящаяся к ImDisk. Если драйвер Ramdriv установлен, он должен отсутствовать одновременно с "DiskVol"
• DiskVol метка диска, если диск отформатирован драйвером ImDisk
• CompMark:1 сжатие NTFS (или "0", если сжатие отсутствует), по-умолчанию "0"
• Opt: 0x1 bit:Being 1 указывает на режим физической памяти, предназначено только для Imdisk.
• Ctrl:0x1 bit:writable.0x10 демонтировать при выключении
• Ctrl:0x1 bit:writable.0x20 демонтировать всё при выключении
• Ctrl:0x1 bit:writable.0x40 отключить демонтирование.
• Ctrl:0x1 bit:writable.0x100/0x200 с/без многих w-mount для этого диска
--nbrd не транслировать букву диска в полный формат ImDisk
RAMD P20 L32 H64
RAMD ImDisk,L64,NTFS,B:,ImDisk1[,1,1]
RAMD Ramdriv,P20L32H64
RAMD ImDisk*ret*2097280s*5734529s*0*\\.\PhysicalDrive0 -a -o hd -m Z: //секторное маппирование
Допускается отдельное использование параметров [Pxx] [Lyy] [Hxx]. Например, при использовании RAMD P10 под RamDisk будет отведено 10% доступной памяти.
• Если используется Ramdriv, диску назначается буква диска и форматируется драйвером Ramdriv, а при использовании ImDisk - PECMD.
• Когда используется драйвер для ImDisk, эту команду можно использовать для увеличения размера указанного виртуального диска, например: RAMD ImDisk, L128, NTFS, B:, ImDisk2.
• Pxx Lyy Hzz можно использовать отдельно. Минимальное значение PECMD составляет 1M, а максимальное - 2ГБ (для OS x86) и 32ГБ (для OS x64)
• Монтируйте WIM в режиме физической памяти (RAMD ImDisk, L64, NTFS, B:, ImDisk1,, 1). Для FAT32 размер диска не может быть меньше размера содержимого WIM.
• Если команда выполнена успешно, в переменной среды %CurRamDisk% будет установлена буква RAM-диска, и ее можно будет установить как системную с помощью команды ENVI, если нужно.
• Внутренний IMDISK нуждается в Cabinet.DLL.
RAMD imdisk* -a -F \Device\harddisk0\partition1\programs.img -m B:
RAMD ImDisk*&V*%&start%s*%&lenth%s*0*\\.\PhysicalDrive%&disk% -a -o hd -m %&volume%:
RAMD Imdisk*&QIMD -l -m %OPDrv%
RAMD Imdisk* -D -m %&Drv%
RAMD ImDisk* -a -o ro -t file -m %&Drv1% -f %&iso% %&IOPT%
RAMD ImDisk* -a -o hd -o rw -f K:\PageFile.sys -m z: -s 134217728 -p "/fs:Fat /x /q /y /v:PageFile /force

Описание команды PAGE

PAGE [*force] <PageFilePath> <InitSize> [Max]
Команда для установки файла подкачки (витальная память).
• Используйте формат DOS 8.3, чтобы указать путь к файлу подкачки, например "C:\PageFile.sys".
• Единица измерения InitSize и Max - мегабайты (MB). Если Max не указано, тогда Max будет равен InitSize.
PAGE C:\PAGEFILE.SYS 128 256 //Подключить файл подкачки C:\PAGEFILE.SYS с начальным размером 128Мб и максимальным размером 256Мб.
• Если подключен файл подкачки, то раздел, где он находится, невозможно отформатировать.
• Если доступной памяти больше, чем InitSize, тогда файл подкачки не будет подключен. Т.е., размер InitSize может использоваться в качестве условия для подключения файла подкачки.
• Эта команда производит интеллектуальный поиск подходящего раздел HDD, чтобы подключить файл подкачки, начиная с файла, содержащего определенное имя файла подкачки (включая букву диска), чтобы избежать медленного жесткого диска или съемного накопителя. Если система запускается с диска или съемного накопителя, файл подкачки, определенный в файле конфигурации, вероятно, будет в них правильным. После цикла поиска, только если не найден подходящий раздел HDD, будет произведено подключение файла подкачки на съемном устройстве.
*force отключить функции, описанные в REM2 и REM3 (т.е., в любом случае подключать файл подкачки, независимо от InitSize и накопителя).

[Цитировать]

    mat.86
  • 14134
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 225
  • Репутация:1

    [+] [-]
72831mat.86,
72827хотел обмануть судьбу.
Я писал такой скрипт под XP сборку.
Принцип прост - на флэшке создается файл нужного размера, он монтируется с помощью ImDisк как виртуальный диск, на котором свободно создается файл подкачки.
Если нужен, могу поделиться.
А имдиск для этого должен быть интегрирован или можно какую нибудь портабельную версию использовать

Страница 16 из 28


Показать сообщения:    

Текущее время: 08-Май 16:49

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы