Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] запуск *.exe с параметром "y" с помощью батника (http://forum.oszone.net/showthread.php?t=204993)

sharky lions 17-04-2011 14:53 1660239

запуск *.exe с параметром "y" с помощью батника
 
имеется:
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do Start /Wait "" "%%I"
он рабочий, но есть проблемка, все эти *.exe являются SFX архивами и их надо запустить с параметром /y
а также назначить им рабочую папку C:\Users\admin\Desktop\unpack_Gen\

пробовал
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do Start /Wait "" "%%I" /y
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do Start /Wait "" "%%I" "/y"
не помогает


____________________________________________________________________________________________________ _______________
решение задачи от gora и amel27:
Цитата:

Цитата amel27
на основе варианта от gora:
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do (
Echo A|Start "" /D "C:\Users\admin\Desktop\unpack_Gen\" /B /Wait "%%~I"
)

»


gora 17-04-2011 15:22 1660253

Цитата:

Цитата sharky lions
их надо запустить с параметром /y
а также назначить им рабочую папку C:\Users\admin\Desktop\unpack_Gen\ »

Попробуйте так:
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do Start /Wait "" /D"C:\Users\admin\Desktop\unpack_Gen" "%%~I /y"

amel27 17-04-2011 15:30 1660261

Цитата:

Цитата gora
Попробуйте так: »

что-то подсказывает, что под "рабочим" имелся ввиду каталог, куда извлекать архивы ;)

sharky lions 17-04-2011 16:41 1660306

gora, спасибо - путь работает, но ключик "/y" по прежнему игнорится...

amel27, для SFX архива это одно и тоже, если при запаковке не было указано иное (можно указать путь разархивации, который будет применяться автоматически не зависимо от расположения архива при его запуске, при открытии например винраром, можно задать путь разархивации даже для SFX архива) в данном случае не важно архив это или нет... проблема в том что запускались все EXE-шники по месту расположения bat файла

gora 17-04-2011 18:51 1660369

Цитата:

Цитата sharky lions
для SFX архива это одно и тоже, »

Боюсь Вас расстроить, но это не верное утверждение.
Рабочая директория ни как не влияет на папку распаковки, например, 7z SFX архива (на базе модифицированного модуля). Папка распаковки указывается в файле конфигурации. Если даже она там не указана, то папкой рапаковки будет временная папка, но не рабочая директория.
Типов SFX архивов достаточно много и все они ведут себя по разному. Обязательно указывайте тип SFX о котором Вы ведете речь.
Цитата:

Цитата sharky lions
но ключик "/y" по прежнему игнорится... »

Я не имею этих SFX, ни чего не знаю о них (даже их тип неизвестен) и не знаю о назначении указанного ключа. А может он и не должен ни чего делать?
Попробуйте написать строку запуска Вашего SFX с указанным ключом без цикла и Start и добится правильной работы ключа -y

zero55 17-04-2011 18:55 1660373

start /wait "cmd /c command"

CyberDaemon 17-04-2011 19:39 1660389

Код:

echo /y | команда
?

sharky lions 17-04-2011 20:20 1660414

Цитата:

Цитата gora
Цитата sharky lions:
для SFX архива это одно и тоже, »
Боюсь Вас расстроить, но это не верное утверждение.
Рабочая директория ни как не влияет на папку распаковки, например, 7z SFX архива (на базе модифицированного модуля). Папка распаковки указывается в файле конфигурации. Если даже она там не указана, то папкой рапаковки будет временная папка, но не рабочая директория.
Типов SFX архивов достаточно много и все они ведут себя по разному. Обязательно указывайте тип SFX о котором Вы ведете речь. »

ну вопервых "модификация" и стандарт потому и различаются ;) во вторых зависит от выбранного типа управления архивацией чем более современная версия архиватора тем больше вероятность наличия режима "умолчаний", и как правило без специального включения "про" опций, всё происходит по режиму "умолчаний", внимательно прочитай мой пост, я там об этом говорю, только не разжёвываю ;)

Цитата:

Цитата gora
Цитата sharky lions:
но ключик "/y" по прежнему игнорится... »
Я не имею этих SFX, ни чего не знаю о них (даже их тип неизвестен) и не знаю о назначении указанного ключа. А может он и не должен ни чего делать?
Попробуйте написать строку запуска Вашего SFX с указанным ключом без цикла и Start и добится правильной работы ключа -y »

о том каким архиватором были созданы эти архивы я также не имею понятия ) может это не зип и не рар а какой-нить арж... всё что я знаю что это содержимое архивов с рубоарда внешний архив рар а что там дальше хэ его зэ....

Foreigner 17-04-2011 21:22 1660444

sharky lions,
А откуда вы знаете про этот ключ?

sharky lions 17-04-2011 21:25 1660446

кстати ключ "y" игнорируется не только здесь...

в первой моей теме
скрипт так же игнорит "/y" и дозаписывает только не существовавшие ранее файлы...
может я что-то не так понимаю? требуется перезапись файлов при копировании/разархивации, по логике /y должен отвечать на все запросы о перезаписи ответом (Y)es...

прошу прощения подчёркнутое это бред! там была другая проблема )))

Foreigner 17-04-2011 21:33 1660452

sharky lions,

Если требуется пользовательский ввод, то как уже посоветвали попробуйте так:
Код:

...) do echo y | "%%i"
Если нужно указать папку, то попробуйте ее создать и перейти в нее:
Код:

...) do (
   
    2>nul md "C:\Path\To\Dir"
    pushd "C:\Path\To\Dir"
    echo y | "%%i"
    popd

)


sharky lions 17-04-2011 21:39 1660459

Цитата:

Цитата Foreigner
sharky lions,
А откуда вы знаете про этот ключ? »

когда-то во времена MS-DOS этот ключик отвечал на любой вопрос (Y)es

внутренний SFX архив тоже RAR[/q]



CyberDaemon, укажи плиз в какое место кода надо это вставить?

Foreigner 17-04-2011 21:58 1660479

Цитата:

echo /y | команда
Это ничего не решит. Нужно:
Код:

echo y | команда
Но и здесь нет гарантии, что приложение примет ответ по конвейеру, а не будет ждать ввода с клавиатуры.

sharky lions 17-04-2011 22:40 1660511

Foreigner, укажи плиз в какое место кода надо это вставить? методом изменения приведённого мною скрипта...

Foreigner 17-04-2011 22:46 1660519

Код:

@echo off

for /r C:\Users\admin\Desktop\Gen\ %%i in (*.exe) do  echo y | "%%i"


sharky lions 17-04-2011 23:32 1660552

прости в этот код )))
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do Start /Wait "" /D"C:\Users\admin\Desktop\unpack_Gen" "%%~I"
к тому же я не втыкаю как приведённый тобою код будет обрабатывать exe-шники на сколько я знаю start тут обезателен, а /wait более чем желателен... наверное ты не обратил внимания, что батник обрабатывает все файлы расположенные по пути №1 (верно для обоих кодов) и запускает их в папке расположенной по пути №2 (верно для исправленного кода), запуск происходит последовательно, по факту завершения предыдущего процесса, что верно для SFX архивов, плюс ограничение одновременно запущеных процессов в командной среде ограничено 20-ю...

Foreigner 17-04-2011 23:47 1660559

sharky lions,
Цитата:

а сколько я знаю start тут обезателен, а /wait более чем желателен...
Нет, в данном случае все будет выполняться последовательно. А про каталог я уже выше написал:
Код:

@echo off

pushd "C:\Users\admin\Desktop\unpack_Gen"

for /r C:\Users\admin\Desktop\Gen\ %%i in (*.exe) do  echo y | "%%i"

popd

Но почему бы сначала не попробовать 'echo y| file.exe'. Может вообще не будет работать.

sharky lions 18-04-2011 00:42 1660591

к тому же для процесса разархивации @echo off абсолютно необходимый элемент )) подумаешь не будешь знать работает скрипт или нет, есть ошибки или нет... нафик оно надо! ))) разархивится десяток архивов, а ещё пол сотни не нужны раз не разархивились )))


Foreigner, что собственно и требовалось доказать не работает ни как вообще)

Foreigner 18-04-2011 07:11 1660665

sharky lions,
Цитата:

подумаешь не будешь знать работает скрипт или нет, есть ошибки или нет... нафик оно надо! )))
`@echo off' никак не влияет на stderr и stdout, для этого есть дескрипторы потоков. Только прячет служебный мусор -- сами команды в промпте.
Цитата:

что собственно и требовалось доказать не работает ни как вообще
Значит не судьба, вбивай "Y" руками или с помощью какой-нибудь кнопконажималки.

PS. Попробуй с помощью файла ответов:
Код:

1>answer.txt echo y
"file.exe" < answer.txt


amel27 18-04-2011 11:21 1660799

Цитата:

Цитата sharky lions
не работает »

выложил бы тестовый архивчик, чтобы не гадать на кофейной гуще...

sharky lions 18-04-2011 13:54 1660912

Цитата:

архив
ru-board
раскрываем внешний архив и получаем тонну SFX...
для рар архивов в командмоде применяется ключ -o+
по крайней мере так написано в мануале ) пробовал по разному подставлять в код батника - не помогло...

amel27 18-04-2011 16:12 1661024

sharky lions, на основе варианта от gora:
Код:

For /R C:\Users\admin\Desktop\Gen\ %%I In (*.exe) Do (
Echo A|Start "" /D "C:\Users\admin\Desktop\unpack_Gen\" /B /Wait "%%~I"
)


sharky lions 18-04-2011 20:34 1661191

респект вам )) оно заработало!! ))) нюансы синтаксиса познаю с вами ))) что-то даже из памяти всплывает по поводу скобок... типа того что там, в скобках, можно вообще несколько тел батников даже вставить и они будут запускаться по условию )))
спасибо!


Время: 00:06.

Время: 00:06.
© OSzone.net 2001-