adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Как передать параметры приложению, запускаемому через .bat-файл?
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)СОФТ
Автор Сообщение
AlexRock
Гуру
СообщениеДобавлено: Чт 21-04-11 : 15-01    Заголовок сообщения: Как передать параметры приложению, запускаемому через .bat-файл? Ответить с цитатой

Т. е. пишу, например

start C:\"Program Files"\app.exe

но при этом хочу передать приложению (не .bat-файлу) app.exe несколько параметров. Как это сделать?

Ну и дополнительный вопрос: чтобы этот батник пускался автоматически при запуске системы, достаточно ли запихнуть его в папку "Автозагрузка" или есть способы получше и понадёжнее? А то у меня половина программ, ярлыки которых в автозагрузке сидят, не пускаются при старте системы, что странно.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
sham
ум, честь, совесть эпохи!
Предупреждений : 4
СообщениеДобавлено: Чт 21-04-11 : 15-36    Заголовок сообщения: del Ответить с цитатой

delПоследний раз редактировалось: sham (Ср 23-03-22 : 02-49), всего редактировалось 1 раз
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Epsilon
Гуру
СообщениеДобавлено: Чт 21-04-11 : 15-44    Заголовок сообщения: Ответить с цитатой

start C:\"Program Files"\app.exe %1 %2 %3

?

можно сделать батник:
echo %1
echo %2
echo %3

и запустить его, передав ему 3 параметра....
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
AlexRock
Гуру
СообщениеДобавлено: Чт 21-04-11 : 18-20    Заголовок сообщения: Ответить с цитатой

А как самому батнику параметры передавать? Я так понимаю, через командную строку или через создание ярлыка на него? Но первое мне не подходит - я же хочу в автозапуск его запихнуть, чтобы самому ничего не вбивать. А второе не полходит тем, что длина поля "Объект", в котором можно параметры вписывать, не превышает где-то 256 символов. У меня же в параметрах полные пути файлов или адреса служб в Интернете. И ещё одно ограничение на параметры батников - не более 10 штук. А если мне надо 12 адресов передать?

Вобщем, нет ли какого-нибудь простого способа получить один файл, по клике на котором, без ввода всяких дополнительных параметров (всё должно вводиться автоматически) запускается приложение с передачей ему 12 длиннющих параметров?

Я могу, конечно, свою простенькую консольную программку написать, но просто хотел узнать, можно ли как попроще - вот, про батники и ярлыки вычитал.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пт 22-04-11 : 10-37    Заголовок сообщения: Ответить с цитатой

AlexRock писал(а):
А как самому батнику параметры передавать?

Запустить батник через другой батник - этот вариант точно работает, мы на лабах подобное делали.
AlexRock писал(а):
Вобщем, нет ли какого-нибудь простого способа получить один файл, по клике на котором, без ввода всяких дополнительных параметров (всё должно вводиться автоматически) запускается приложение с передачей ему 12 длиннющих параметров?

Ну, смотри, если у тебя параметры берутся автоматом, то делаешь батник, который их вынимает, этот батник запускает другой батник, который данные опции использует, запуская твой app.exe с нужными именами файлов.
Правда, в системе "батник->батник", кажется, есть свои тонкости. Если найду старый материал, то напишу.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пт 22-04-11 : 10-53    Заголовок сообщения: Ответить с цитатой

AlexRock
Цитата:
C:\Documents and Settings\root>help call
Вызов одного пакетного файла из другого.

CALL [диск:][путь]имя_файла [параметры]

параметры Набор параметров командной строки, необходимых
пакетному файлу.

Изменение команды CALL при включении расширенной обработки команд:

Команда CALL допускает использование меток в качестве адресата вызова.
Применяется следующий синтаксис:

CALL :метка аргументы

При вызове создается новый контекст текущего пакетного файла с заданными
аргументами, и управление передается на инструкцию, расположенную сразу после
метки. Для выхода из такого пакетного файла необходимо дважды достичь
его конца. Первый выход возвращает управление на инструкцию, расположенную
сразу после строки CALL, а второй выход завершает выполнение пакетного файла.
Команда GOTO /? выводит описание расширения GOTO :EOF, позволяющее выполнить
быстрый возврат из пакетного файла.

Кроме того, раскрытие ссылок на аргументы пакетных файлов (%0, %1 и т.д.)
Для продолжения нажмите любую клавишу . . .

Как видишь, тут загвоздка в том, что первый батник остается висеть на исполнении. Хотя, быть может, это не так уж важно.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пт 22-04-11 : 11-07    Заголовок сообщения: Ответить с цитатой

AlexRock писал(а):
И ещё одно ограничение на параметры батников - не более 10 штук.

Цитата:
При вызове командного файла можно в командной строке задавать последовательность аргументов, отделенных друг от друга пробелами, которые будут замещать формальные параметры при интерпретации строк bat-файла. Допускается использовать до 10 формальных параметров с именами %0, %1, …, %9. Действует принцип позиционного соответствия параметров и аргументов, т.е. вместо %0 подставляется имя самого командного файла, вместо %1 подставляется первый аргумент и т.д.
Пример: Пусть имеется командный файл pf.bat, содержащий строки:
@ECHO OFF
TYPE %1
PAUSE
TYPE %2
PAUSE
Запустить его на выполнение можно, набрав команду pf.bat f1.txt f2.txt. Результатом работы станет вывод на экран содержимого файла f1.txt, а затем, после нажатия клавиши – файла f2.txt.
Для обработки неизвестного заранее количества параметров можно использовать команду SHIFT – сдвиг списка формальных параметров относительно списка аргументов. Если после операции сдвига выполнять возврат (GOTO) к обработке параметра, то количество аргументов – фактических параметров – может ограничиваться только длиной командной строки. Тогда первому формальному параметру будет поочередно соответствовать 1-й, 2-й, 3-й и т.д. фактический параметр. Такой «цикл» должен завершиться, когда закончатся фактические параметры (т.е. очередной параметр окажется пустым).
Вот тут сам думай. Если тебе именно формальные параметры нужны, то лучше прожку написать.
В конце концов, тебе в ней никто не запрещает shell юзать.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
AlexRock
Гуру
СообщениеДобавлено: Пт 22-04-11 : 12-08    Заголовок сообщения: Ответить с цитатой

ДобрыйФей писал(а):
то лучше прожку написать

Да уж, когда пошла такая каша с двумя батниками и кучей наворотов, то лучше прожку в несколько строк написать. Я-то думал, что батники - нормальные такие штуки для как раз таких задач. А они какие-то обрезанные по возможностям донельзя. Чуть что сложнее простого, так сразу громождение костылей начинается. )
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пт 22-04-11 : 17-04    Заголовок сообщения: Ответить с цитатой

AlexRock
Это же прикладные языки, чего ты хотел? Для некоторых нужд очень даже подходят - я, например, в курсовой анализатор лога с температурами делал на баше (с графиками через гнуплот Horoshiy ), куда проще, чем на С.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)СОФТ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы