SHIFT - изменение содержимого (сдвиг) подставляемых параметров для пакетного файла.



Команда SHIFT относительно редко используется в командных файлах, хотя ее применение значительно упрощает обработку большого числа входных параметров. Для получения справки по использованию SHIFT выполните команду:

shift /?

Справка содержит самый минимальный уровень информации, без каких-либо примеров.

Формат командной строки:

shift [/n]

Команда SHIFT при включении расширенной обработки команд поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть от 0 до 9. Например, в следующей команде:

SHIFT /2

параметр %3 заменяется на %2, параметр %4 на %3 и т.д., а параметры %0 и %1 остаются без изменений.

На практике, команду SHIFT удобно применять в тех случаях, когда входные параметры передаются для циклической обработки в подпрограммы. Например, необходимо обработать 10 параметров в отдельной подпрограмме, которая последовательно обрабатывает каждый из них, и при обработке последнего, завершает работу. Если не использовать команду SHIFT, то в подпрограмме в явном виде придется использовать конкретные параметры %1, %2… %10, что приведет к неоправданному количеству строк исходного кода, отличающихся только именем переменной, принимающей значение входного параметра. Если же использовать SHIFT, то можно, например, обрабатывать параметр %1, и затем все прочие, каждый раз выполняю команду SHIFT. Если обрабатываемый параметр станет пустым – это означает, что обработан последний входной параметр. Пример, иллюстрирующий удобство применения команды SHIFT:



@echo off

call :sub1 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10

pause

exit/b

REM Подпрограмма, которой передаются параметры A1…A10

:sub1

echo First parameter before shift - %1

:doshift

Shift

REM Обработка параметра

echo First parameter after shift - %1

REM проверка условия для завершения работы – после SHIFT, параметр %1 стал пустым.

if "%1"=="" goto endsub

goto doshift

:endsub

echo First parameter empty. End job.

exit/b



В процессе выполнения командного файла на экран будут последовательно выведены все передаваемые в подпрограмму sub1 параметры A1, A2… A10, а также, после вывода последнего – сообщение о завершении работы:

First parameter before shift - A1

First parameter after shift - A2

First parameter after shift - A3

First parameter after shift - A4

First parameter after shift - A5

First parameter after shift - A6

First parameter after shift - A7

First parameter after shift - A8

First parameter after shift - A9

First parameter after shift - A10

First parameter after shift -

First parameter empty. End job.

Для продолжения нажмите любую клавишу . . .

Таким образом, последовательная обработка входных параметров сводится к выполнению строки с первым параметром (%1) и последовательного использования SHIFT, до момента, когда его значение станет пустым.







Весь список команд CMD Windows