Пользовательского поиска
Пятница, 29.03.2024, 18:11
Приветствую Вас Гость | RSS
Главная | Нужна помощь - Страница 5 - Форум | Регистрация | Вход
Меню Проекта
Форма входа
Логин:
Пароль:
Мы Рекомендуем:
Мнение Общественности
Какую файловую систему на флешке вы предпочитаете?
1. NTFS
2. FAT-16/32
3. Ext-2/3
4. Другую
Всего ответов: 4979
Статистика
GreenFlash
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: Sh1td0wn, asdqqww  
Форум » Мультизагрузочная флешка » Общий » Нужна помощь (в написании bat-ника)
Нужна помощь
ded2007Дата: Суббота, 07.05.2011, 17:46 | Сообщение # 61
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (antey8)
пдскажите как вывести на экран MountPoint выбранного диска?
Так это же графа "Disk" в формируемой таблице-меню! Если мы рассматриваем ghost.cmd и имя нужно получить после вызова
CALL:flash_select $A $B $H $F,
который делается в самом начале, то воспользуемся тем, что в переменной $B возвращается строка меню для выбранного диска.
Все эти строки имели жесткий формат, поэтому известно что и откуда вырезать (2 символа с 12-ой позиции).
Set $M=%$B:~12,2%
Echo MountPoint:%$M%


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Суббота, 07.05.2011, 17:47
 
ded2007Дата: Пятница, 20.05.2011, 10:05 | Сообщение # 62
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (из преписки)
как можно вызвать диалог открытия файла без mhta.exe, оказываеться его в установочном wmi windows нету. Или если вы знаете vbs или js помочь написать этот небольшой скрипт.

Вот пример собственно скрипта для открытия диалога "File Open" и выдачи результата.
moil
Можно сохранить этот пример в файле с расширением vbs, скажем open.vbs и запустить на исполнение прямо из командной строки:
open.vbs
При этом, ответ будет выдан в виде окна сообщения. Если хотим использовать эту конструкцию в командном файле, то запускать нужно командой
cscript open.vbs
так как при таком запуске результат пойдет в виде эха в командном окне.
Осталось только отфильтровать "лишнюю" информацию от "полезной".
for /f "tokens=*" %i in ('cscript.exe open.vbs ^| find "\"') do @echo %i
Непосредственно в командном файле эта команда будет выглядить несколько иначе. Зато мы можем создать vbs-файл, запустить его, получить ответ, проанализировать его, убрать ставший ненужным vbs-файл и исполнить задуманный набор действий. wacko
Более того, можно оформить это в виде "подпрограммы" и иcпользовать ее многократно в своем командном файле. cool


Примечания:
1. Даже после "Диалога" Вам необходимо проверять наличие файла, т.к. пользователь имеет возможность исправлять имя файла прямо в диалоге.
2. Не уверен, что это будет работать в заявленной среде - "в установочном wmi windows". Просто не знаю что там есть и чего нет. wink
Прикрепления: open.cmd (0.8 Kb)


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Пятница, 20.05.2011, 10:22
 
semenДата: Пятница, 20.05.2011, 15:12 | Сообщение # 63
Специалист
Группа: Проверенные
Сообщений: 233
Репутация: 28
Статус: Отсутствует
большое спасибо, именно что-то в таком роде мне и надо, только к сожалению при запуск выдает вот такое сообщение, как при запуске из установочного дистрибутива так и на установленной Seven x64, в других ОС непроверял
D:\#a.vbs(1, 1) Ошибка выполнения Microsoft VBScript: Невозможно создание объекта контейнером ActiveX: 'UserAccounts.CommonDialog'

Добавлено (20.05.2011, 15:12)
---------------------------------------------
вот и весь скрипт, на cmd только затруднения в указания файла, на vbs и js сколько не пытался все время какие-то ошибки выдает

Code
0<%~dp0pathiso.txt set /p "TPI="
FOR %%i IN (C D E F G H I J K L N M O P Q R S T U V W X Y Z) DO IF EXIST %%i:\%TPI% SET RPI=%%i:\%TPI%
if "%RPI%"=="" открытие диалога выбора файла с присвоением переменной RPI имени выбранного файла rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 132 %~dp0imdisk.inf
imdisk -a -f "%RPI%" -m #:

вот прикрепил списки файлов

Прикрепления: System32.txt (117.9 Kb) · Syswow64.txt (0.2 Kb) · all.txt (230.5 Kb)


7/Vista, XP, 7/Vista

Сообщение отредактировал semen - Пятница, 20.05.2011, 15:55
 
ded2007Дата: Пятница, 20.05.2011, 20:03 | Сообщение # 64
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (semen)
Ошибка выполнения Microsoft VBScript: Невозможно создание объекта контейнером ActiveX: 'UserAccounts.CommonDialog'
Тогда можно попробовать заменить в скрипте первую строку
Set objD = CreateObject("UserAccounts.CommonDialog")
на
Set objD = CreateObject("MSComDlg.CommonDialog")

Если это сработает для примера open.vbs, то по аналогии корректируем open.cmd, т.е. в "подпрограмме" :dialog_open biggrin меняем строку
echo Set objD=CreateObject("UserAccounts.CommonDialog")>#a.vbs
на
echo Set objD=CreateObject("MSComDlg.CommonDialog")>#a.vbs

При всем этом, нужно иметь виду, что в таком варианте необходимо присутствие библиотеки компонентов MSCOMDLG32.OCX, да еще и зарегистрированной. Надеюсь, что это не окажется слишком жестким условием smile


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ
 
semenДата: Пятница, 20.05.2011, 23:11 | Сообщение # 65
Специалист
Группа: Проверенные
Сообщений: 233
Репутация: 28
Статус: Отсутствует
непомагло, незнаю может у меня что-то с системой, на ней тоже не идет.
вбил в google MSCOMDLG32.OCX, нашел только COMDLG32.OCX, скачал его и зарегистрировал все прошло нормально, а в установщике пишет что разрядность нета, хотя пробовал и x86 и x64, пробовал зарегистрировать пару других dll тоже вылезали ошибки, наверное всетаки забью на это дело


7/Vista, XP, 7/Vista
 
ded2007Дата: Пятница, 20.05.2011, 23:35 | Сообщение # 66
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (semen)
наверное всетаки забью на это дело
Может еще одно усилие?
1. Скачиваем приложенный архив с ocx
2. Распаковываем из архива в Windows\System32
3. Находим в этой же папке cmd.exe, щелкаем правой клавишей мышки и выбираем запуск как Администратор (насчет прав это важно, проконтролируйте, чтобы в заголовке окна присутствовало слово "Администратор")
4. Даем команду
regsvr32 %Systemroot%\System32\comdlg32.ocx
Прикрепления: Comdlg32.zip (57.7 Kb)


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Пятница, 20.05.2011, 23:36
 
semenДата: Суббота, 21.05.2011, 00:16 | Сообщение # 67
Специалист
Группа: Проверенные
Сообщений: 233
Репутация: 28
Статус: Отсутствует
я в принципе так и пробовал, еще раз попробовал сделал все точь в точь с тем Comdlg32 который загрузили вы и опять вылезает сообщение о разрядности, другой Comdlg32 брал из Seven x64, в Vist-е смотрел нету, разрядность установщика x64 под эту задачку сделал небольшую програмку, под Seven x86 идет под Vista x64 выдает сообщение что устройство не подключено :D, и так не только с моей но и с большинством программ, пробовал разобраться чего нехватает, нашел программу "Dependency Walker", она выдает список всех файлов которыми пользуеться программа(dll и.т.п.) и чего из этого нехватает, но с этим тоже невышло.
У вас уже программа удачно компилирует темы на всех ОС, незнаю это как-то пересекаеться с той проблемой которой у вас перед этим возникала, но всетаки решил упомянуть ее, может пригодиться.


7/Vista, XP, 7/Vista

Сообщение отредактировал semen - Суббота, 21.05.2011, 01:39
 
ded2007Дата: Суббота, 21.05.2011, 10:07 | Сообщение # 68
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Пошарил по Сети. Оказывается это действительно проблема и гарантированного решения не нашел. Все эти ограничения, как я понял, связаны с более развитой системой безопасности нового поколения Windows.

Мне кажется, что для командного файла не стоит городить такие сложные схемы, ведь такие файлы предназначены для более или менее опытных пользователей. Проще организовать запрос на путь к файлу
Set /p file1=Укажите путь к файлу №1:
Echo Вы выбрали файл %file1%

Только пользователю предварительно нужно объяснить, что не нужно "вбивать" путь ручками, а можно скопировать путь в Explorer-е и вставить его в командном окне. Для XP есть удобная в этом плане утилита Path2Clipboard (может она и под x64 пойдет?), а Win7 сама предлагает скопировать путь в адресной строке Explorer-а.
PS Версию Windows можно получить командой ver, а если необходимо разобрать ответ по косточкам, то можно сделать так:


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Суббота, 21.05.2011, 10:29
 
semenДата: Суббота, 21.05.2011, 12:17 | Сообщение # 69
Специалист
Группа: Проверенные
Сообщений: 233
Репутация: 28
Статус: Отсутствует
стандартного explorer-a там тоже нет, сам в качестве заменителя использовал выбор файла в блокноте biggrin

7/Vista, XP, 7/Vista
 
ded2007Дата: Суббота, 21.05.2011, 19:45 | Сообщение # 70
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (semen)
стандартного explorer-a там тоже нет, сам в качестве заменителя использовал выбор файла в блокноте biggrin
Класс!!! Так вот как хакается защита от M$ biggrin


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Суббота, 21.05.2011, 19:46
 
antey8Дата: Воскресенье, 22.05.2011, 09:18 | Сообщение # 71
Ищущий
Группа: Проверенные
Сообщений: 38
Репутация: 7
Статус: Отсутствует
ded2007,
не отрабатывает в winxpe

Code
:dialog
for /f "usebackq delims=" %%Q in (`@mshta "about:<FORM><INPUT type='file' name='qq'></FORM><script>document.forms[0].elements[0].click();var F=document.forms[0].elements[0].value;try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(F)};catch (e){};close();</script>" ^|MORE`) do set %1="%%Q"&REM

а диалог на сохранение

Code
:dialog_save
rem echo Создаем скрипт a.vbs...
    set FILE_SAVE=
    echo Set objDialog = CreateObject( "SAFRCFileDlg.FileSave" )>#a.vbs
    echo objDialog.FileName = "">>#a.vbs
    echo objDialog.OpenFileSaveDlg>>#a.vbs
    echo WScript.Echo objDialog.FileName>>#a.vbs
rem echo Работает скрипт a.vbs...
    for /f "tokens=*" %%i in ('cscript.exe #a.vbs ^| find "\"') do set FILE_SAVE="%%i"
rem echo Удаляем скрипт a.vbs
    del /q #a.vbs>nul 2>nul

работает нормально.
подскажите вчём может быть дело?
есть подозрение что в winxpe чегото нехватает.

Сообщение отредактировал antey8 - Воскресенье, 22.05.2011, 09:28
 
ded2007Дата: Воскресенье, 22.05.2011, 10:22 | Сообщение # 72
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (antey8)
не отрабатывает в winxpe
:dialog
for /f "usebackq delims=" %%Q in (`@mshta "about:<FORM><INPUT t
В этом примере мы использовали mshta.exe.
MShta.exe это Microsoft HTML Application Host, приложение для запуска исполняемых html-модулей (файлов hta). Стало быть именно mshta.exe нужно интегрировать в пакет.

На случай если это затруднительно или невозможно:
Чуть выше semen сообщал, что в WMI Windows это приложение отсутствует и мы попытались пробиться через VBScript. В его случае это не помогло, а вот Вам, наверное, могло бы помочь. Посмотрите пример с диалогом "FileOpen" на VBS.


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Воскресенье, 22.05.2011, 10:30
 
antey8Дата: Воскресенье, 22.05.2011, 10:59 | Сообщение # 73
Ищущий
Группа: Проверенные
Сообщений: 38
Репутация: 7
Статус: Отсутствует
Quote (ded2007)
В этом примере мы использовали mshta.exe. mshta.exe это Microsoft HTML Application Host, приложение для запуска html-модулей (файлов hta). Стало быть именно mshta.exe нужно интегрировать в пакет.

mshta.exe есть в system32 но диалог не появляется
что ей ещо нада?
я сборку сам собираю и могу добавлять всё необходимое

Добавлено (22.05.2011, 10:59)
---------------------------------------------

Quote (ded2007)
На случай если это затруднительно или невозможно: Чуть выше semen сообщал, что в WMI Windows это приложение отсутствует и мы попытались пробиться через VBScript. В его случае это не помогло, а вот Вам, наверное, могло бы помочь. Посмотрите пример с диалогом "FileOpen" на VBS.

вариант FileOpen уменя тоже не работает.
но сохранение тоже vbs работает


Сообщение отредактировал antey8 - Воскресенье, 22.05.2011, 11:12
 
ded2007Дата: Воскресенье, 22.05.2011, 12:03 | Сообщение # 74
Профессионал
Группа: Проверенные
Сообщений: 595
Репутация: 80
Статус: Отсутствует
Quote (antey8)
mshta.exe есть в system32 но диалог не появляется что ей ещо нада?
Давайте проведем эксперимент. Проверим работает ли самый простой вариант.
1. Нужно открыть консоль в той папке, где находится неработающий cmd-файл
2. Даем команду
mshta "OK:"
должно появиться пустое окно с заголовком "OK:". Для нас это означает, что mshta работает. wink

Quote (antey8)
вариант FileOpen уменя тоже не работает.
А что пишет? Можно скриншот? cool


@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ

Сообщение отредактировал ded2007 - Воскресенье, 22.05.2011, 12:04
 
semenДата: Воскресенье, 22.05.2011, 12:12 | Сообщение # 75
Специалист
Группа: Проверенные
Сообщений: 233
Репутация: 28
Статус: Отсутствует
на всякий случай объем дополнительных файлов для меня тоже не очень важен, вот только интегрировать их нужно в рабочей среде

7/Vista, XP, 7/Vista
 
Форум » Мультизагрузочная флешка » Общий » Нужна помощь (в написании bat-ника)
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:
Чат

Copyright GreenFlash © 2024
Рейтинг@Mail.ru