Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/39: Рейтинг темы: голосов - 39, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 15.10.2012
Сообщений: 3
1

Использование списка значений в качестве параметров в пакетном файле

15.10.2012, 02:53. Показов 7580. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
доброй ночи господа. весь вечер мучаюсь, помогите
нужно создать пакетный файл с использованием списка значений в
качестве параметров. количество значений заранее не определено.
Например, запуск по очереди программ, перечисленных в командной строке
при запуске пакетного файла на выполнение. Вариантом запуска такого файла
может быть: > bat.bat calc Dir notepad. причем если после параметра батника не стоит разделитель например. символ # то программа будет запускаться с параметром идущим следующим за ней, например запуск батника в виде bat.bat notepad file.txt # calc # cd MyDir будет запускать блокнот с открытием файла file.txt, потом после закрытия блокнота запускать калькулятор без параметров, и после закрытия калька будет создавать папку в текущем каталоге MyDir. как это реализовать я хз,
на данный момент родил только это




Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
echo Start executing commands...
set tmpx=%1
 
:m1
shift
if "%1"=="" goto end
if not "%1"=="#" goto m2
%tmpx%
set tmpx=
goto m1
 
:m2
set tmpx=%tmpx% %1
goto m1
 
:end
%tmpx%
set tmpx=
echo Finishing...
помогите, а то я не усну сегодня))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2012, 02:53
Ответы с готовыми решениями:

Использование параметров в пакетном файле для удаления файлов
Здравствуйте! Почему батник вот так работает: @echo off chcp 1251>nul set /p...

Создание пакетного файла с использованием списка значений в качестве параметров.
Посмотрите, пожалуйста, задание: Создайте пакетный файл P3 с использованием списка значений...

Изменение значений переменных в основном пакетном файле из вызываемого им пакетного файла
Допустим есть два батника, один вызывающий другой через call. ######## BAT.bat ######## echo off...

Использование делегатов в качестве параметров функции
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и...

6
612 / 92 / 14
Регистрация: 15.08.2012
Сообщений: 62
15.10.2012, 04:47 2
Посмотрите пожалуйста, сюда. Там показано, как разбирать и обрабатывать по одному практически неограниченное количество параметров. Вам только стоит задать в качестве подобного списка "%*" - все, переданные скрипту аргументы.
1
Эксперт WindowsАвтор FAQ
18012 / 7713 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
16.10.2012, 01:16 3
Anonymоus, Я полагаю реализация со сдвигом из кода ТС будет более проста.

arvidas, у Вас вообщем-то рабочий код.

Чуть упростил, в некоторых моментах усложнил:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
if "%1"=="" echo Using %0 Program1 Parameter1 # Program2 Parameter2 ...&Goto :eof
echo Start executing commands...
set tmpx= %1
 
:m1
shift
if not "%1"=="#" if not "%1"=="" (set tmpx=%tmpx% %1& Goto :m1)
if defined tmpx start "" /wait %tmpx:~1%
if "%1"=="" goto :end
set tmpx=
goto :m1
 
:end
echo Finishing...
-1 символ слева урезаю, т.к. скрипт не знает пробел ли это перед очередным параметром или именем программы.
0
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 3
16.10.2012, 02:20 4
Доброй ночи, стоит похожая задача: выполнение неизвестного количества команд, разделенных ;.
Реализовать с помощью команды for, может кто поможет?

 Комментарий модератора 
Читаем правила https://www.cyberforum.ru/cmd-... ment3.html
п.п. 4.3., 4.4., 4.7.
0
Эксперт WindowsАвтор FAQ
18012 / 7713 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
16.10.2012, 11:46 5
SPS, Ответ на это в посте № 3.

Посмотрите на описание темы тов. arvidas. Видите, Ваше чем-то сильно отличается?

Добавлено через 8 часов 59 минут
SPS, а если логично предположить, что нужно заменить в коде знак # на знак ;

Я указал Вам на Правила, потому что Ваше сообщение неинформативное,
и что-либо толком ответить нельзя, не увидив как точно выглядит команда с параметрами из Вашей задачи.

Если у Вас между параметрами нет пробелов - этот алгоритм Вам не подойдет, а значит Вам необходимо создать новую тему.
(а команда FOR - это и есть другой алгоритм, на который намекал Anonymоus).
0
0 / 0 / 0
Регистрация: 20.01.2016
Сообщений: 3
28.12.2012, 10:01 6
Здравствуйте. Может я слишком просто сделала. Однако это работает

Например, назовем данный пакетный файл P3.bat

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
rem Этот bat запускает по очереди программы, заданные в командной строке
 
set s=start
%s% %1 
:ag
shift
if "%1"=="" goto end
%s% %1 
goto ag
 
:end
set s=
echo Batch End
В командной строке cmd пишем: P3.bat calc notepad edit (и др.)

единственное, что у меня запускались все программы по порядку без пауз.
0
Эксперт WindowsАвтор FAQ
18012 / 7713 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
29.12.2012, 03:35 7
Не, Helena_Sh, там гораздо сложнее задание было.
Программа запускается вместе с параметрами до очередного символа #.

Единственное, что вижу в моем варианте можно упростить - это поставить 10-ю строку между 7-8, и соответственно убрать 2-е условие из строки № 8.
1
29.12.2012, 03:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2012, 03:35
Помогаю со студенческими работами здесь

Использование матриц в качестве параметров в функциях
В квадратной матрице A(n*n) найти наибольший элемент среди элементов, расположенных на главной и...

Использование функций в качестве формальных параметров
Помогите вычислить f(x)/g(x), где в качестве f(x) и g(x) могут быть четыре различные функции,...

Использование делегатов в качестве параметров функции
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и...

Использование делегатов в качестве параметров функции
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru