CMD/BAT - [решено] Shift

Аватара пользователя
Hardip

CMD/BAT - [решено] Shift

Сообщение Hardip »

Доброго времени суток всем! Выполняю bat-ник, его старт происходит с 11 аргументами. Почитал по поводу Shift. но не до конца понял.



Код:

Код: Выделить всё

cls 
SHIFT  start %1 %2 %3 %4 %5 %6 %7 %8 %9 cmd.exe
echo File %0 with param %1 %2 %3 %4 %5 %6 %7 %8 %9

Мне для того чтобы вывести на экран ещё 2 аргумента, что нужно сделать?
Аватара пользователя
Hardip

Re: CMD/BAT - [решено] Shift

Сообщение Hardip »

Цитата Hardip:



вывести на экран ещё 2 аргумента
CMD/BAT - [решено] Shift




просто вывести на экран все аргументы можно так:

Файл Hardip.bat :

Код:

Код: Выделить всё

@Echo Off
Echo %*
Pause>Nul

Файл для проверки запуска HardipStart.bat:

Код:

Код: Выделить всё

@Echo Off
Hardip.bat "1 param" "2 param" "3 param" "4 param" "5 param" "6 param" "7 param" "8 param" "9 param" "10 param" "11 param" "12 param"
Аватара пользователя
gora

Re: CMD/BAT - [решено] Shift

Сообщение gora »

Цитата gora:



просто вывести на экран все аргументы можно так:
CMD/BAT - [решено] Shift




Да, это я уже прочитал)) Я неверно выразился - они должны быть не только видны, но и ещё используемы! Это реально?

Ещё я вот нашёл:


Цитата:



Работа более чем с 10 пакетными параметрами Команда shift также может быть использована для создания пакетных программ, воспринимающих более 10 параметров. В командной строке такой программы можно задать более 10-ти параметров, при этом все параметры, следующие за десятым (то есть за переменной%9) будут последовательно помещены в эту переменную %9.



Но не понял, её ведь не просто надо ввести, она определяет именно сдвиг..
Аватара пользователя
Hardip

Re: CMD/BAT - [решено] Shift

Сообщение Hardip »

Цитата Hardip:



они должны быть не только видны, но и ещё используемы! Это реально?
CMD/BAT - [решено] Shift




Реально.

Напишите, как Вы хотите их использовать? Присвоить переменным, запустить по очереди некий файл с каждым из 12-ти параметров?
Аватара пользователя
gora

Re: CMD/BAT - [решено] Shift

Сообщение gora »

Допустим хочу сделать так, копировать файл с параметрами. Делаю:



Код:

Код: Выделить всё

test.bat /a /p /v /c /f /l /h /k /j /w /y

- для запуска из командной строки



Код:

Код: Выделить всё

xcopy test.bat test2.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 Echo %*

- а вот что написано в самом файле. Он соответсвенно после 9 обрезает..

Грубо - надо чтобы делал действия с параметрами более 11, и выводил на экран. Читал тут

HTML код:

Код: Выделить всё

http://www.windowsfaq.ru/content/view/77/57/
Аватара пользователя
Hardip

Re: CMD/BAT - [решено] Shift

Сообщение Hardip »

Допустим хочу сделать так, копировать файл с параметрами. Делаю:



Код:

Код: Выделить всё

test.bat /a /p /v /c /f /l /h /k /j /w /y

- для запуска из командной строки



Код:

Код: Выделить всё

xcopy test.bat test2.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 Echo %*

- а вот что написано в самом файле. Он соответсвенно после 9 обрезает..

Грубо - надо чтобы делал действия с параметрами более 11, и выводил на экран. Читал тут

HTML код:

Код: Выделить всё

http://www.windowsfaq.ru/content/view/77/57/
Аватара пользователя
gora

Re: CMD/BAT - [решено] Shift

Сообщение gora »

А так?

Код:

Код: Выделить всё

xcopy test.bat test2.bat %*
Аватара пользователя
Hardip

Re: CMD/BAT - [решено] Shift

Сообщение Hardip »

Цитата Hardip:



А символы %* получается выводят все команды?
CMD/BAT - [решено] Shift




%* - все параметры командной строки.

Пример Hardip.bat для вывода 12-ти параметров с использованием Shift

Код:

Код: Выделить всё

@Echo Off
Echo %1
Echo %2
Echo %3
Echo %4
Echo %5
Echo %6
Echo %7
Echo %8
Echo %9
Shift
Echo %9
Shift
Echo %9
Shift
Echo %9
Pause>Nul
Аватара пользователя
gora

Re: CMD/BAT - [решено] Shift

Сообщение gora »

А вот для провери, что параметров более 11? Ведь я читал, что как то можно взять результат выполнения предыдущей команды?

Вида

Код:

Код: Выделить всё

FOR /L %переменная IN (начало,шаг,конец) DO
for /l %1 in 1,1,11 do

Как-то так..
Аватара пользователя
Hardip

Re: CMD/BAT - [решено] Shift

Сообщение Hardip »

Цитата Hardip:



нужно ввести только опреденное число команд от ( ну там от 4 до 11), а свыше чтобы выдал ошибку?
CMD/BAT - [решено] Shift






Код:

Код: Выделить всё

@Echo Off
Echo %4
Echo %5
Echo %6
Echo %7
Echo %8
Echo %9
Shift
Echo %9
Shift
Echo %9
Shift
Set t=%9
If Defined t Echo Error. Param 12 exist
Pause>Nul
Ответить

Вернуться в «Скриптовые языки администрирования Windows»