$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
Команда 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, до момента, когда его значение станет пустым.