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, до момента, когда его значение станет пустым. |
|