Shift
Изменяет положения пакетных параметров в пакетных файлах.
Синтаксис
shift
Параметры
- отсутствуют
Примечания
- Использование параметра командной строки shift с расширениями командного
процессора
Если расширения командного процессора разрешены (используются по умолчанию), команда shift поддерживает ключ /n, который указывает команде начинать сдвиг с n-го аргумента, где n число от нуля до восьми. Например:
SHIFT /2
сдвинет %3 на %2, %4 на %3 и т. д. %0 и %1 останутся неизменными.
- Работа команды shift
Команда shift изменяет значения замещаемых параметров %0 - %9 путем копирования каждого параметра в предыдущий. Другими словами, значение %1 копируется в %0, значение %2 в %1 и т. д. Такой прием оказывается полезным при написании пакетных файлов, выполняющих одну и ту же операцию над любым числом параметров.
- Работа более чем с 10 пакетными параметрами
Команда shift также может быть использована для создания пакетных программ, воспринимающих более 10 параметров. В командной строке такой программы можно задать более 10-ти параметров, при этом все параметры, следующие за десятым (то есть за переменной%9) будут последовательно помещены в эту переменную %9.
- Использование %* с командой shift
Команда shift не влияет на пакетный параметр %*.
- Смещение параметров в обратном направлении
Команды, выполняющей обратный сдвиг не существует. После сдвига параметров командой shift начальное значение первого параметра (%0) не может быть восстановлено.
Примеры
В следующем пакетном файле Mycopy.bat показано, как использовать команду shift с произвольным числом пакетных параметров. Файл копирует набор файлов в заданный каталог. Пакетные параметры представлены аргументами имени файла и каталога.
@echo off
rem MYCOPY.BAT копирует произвольное число файлов
rem в каталог.
rem Используется следующий синтаксис:
rem mycopy dir файл1 файл2 ...
set todir=%1
:getfile
shift
if "%1"=="" goto end
copy %1 %todir%
goto getfile
:end
set todir=
echo Работа закончена
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь