Windows cmd передача параметров

Использование пакетных параметров командной строки

Описание

В процессе написания сложных пакетных файлов или же манипуляций с командной строкой многие вещи можно упростить. Одним из способов такого упрощения — является использование параметров и модификаторов, о которых и пойдет речь в статье.

Параметры командной строки

Пакетные параметры командной строки используются в пакетном файле для получения информации о настройках среды.

Файл Cmd.exe разворачивает переменные с %0 по %9. При использовании пакетных параметров переменная %0 заменяется на имя пакетного файла, а переменные с %1 по %9 — на соответствующие аргументы, напечатанные в командной строке. Для доступа к переменным больше %9 запустите команду shift. Для получения дополнительных сведений о команде shift смотрите раздел Shift. Параметр %* ссылается на все аргументы, которые передаются пакетному файлу, за исключением параметра %0.

Например, для копирования содержимого из папки 1 (Folder1) в папку 2 (Folder2), где параметр %1 заменяется на значение Folder1, а параметр %2 — на значение Folder2, в пакетном файле с именем Mybatch.bat введите следующую строку:

Для запуска файла введите:

Результат будет таким же, как и при записи в пакетный файл строки:

Модификаторы командной строки

С пакетными параметрами можно также использовать модификаторы. Модификаторы используют информацию о текущем диске и каталоге как часть или полное имя файла или каталога. Для использования модификатора напечатайте символ (%), затем символ тильды (

), а затем соответствующий модификатор (т.е., %

В следующей таблице описаны модификторы, используемые для расширения.

Модификатор Описание
%

1

расширение %1 и удаление любых кавычек («»)
%

f1

замена %1 полным путем
%

d1

замена %1 именем диска
%

p1

замена %1 путем
%

n1

замена %1 именем файла
%

x1

замена %1 расширением имени файла
%

s1

замена путем, содержащим только короткие имена
%

a1

Замена %1 атрибутами файла
%

t1

замена %1 датой и временем модификации файла
%

z1

замена %1 размером файла
%

$PATH:1

поиск в каталогах, перечисленных в переменной среды PATH, замена %1 полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку.

В следующей таблице даны возможные комбинации модификаторов и квалификаторов для получения более сложных результатов.

Модификатор Описание
%

dp1

замена %1 именем диска и путем
%

nx1

замена %1 именем файла и расширением
%

dp$PATH:1

поиск в каталогах, перечисленных в переменной среды PATH, и замена %1 именем диска и путем к первому найденному файлу.
%

ftza1

замена %1 строкой, аналогичной результату работы программы dir

Примечания

  • %1 и PATH в показанных выше примерах можно заменить на другие значения пакетных параметров.
  • Модификатор %* является уникальным, так как он представляет все аргументы, переданные пакетному файлу. Этот модификатор не используется в комбинации с модификатором %

должна завершаться допустимым номером аргумента.

  • Нельзя манипулировать пакетными параметрами подобно переменным среды. Нельзя искать и заменять значения или контролировать подстроки. Но переменной среды можно назначить параметр, а потом уже ей манипулировать.
  • Параметры командной строки

    Параметры командной строки

    С и — компилируемый язык. После сборки программа представляет собой исполняемый файл (мы не рассматриваем создание динамических библиотек, драйверов и т.д.). Наши программы очень простые и не содержат библиотек времени выполнения (Runtime libraries), поэтому могут быть перенесены на компьютер с такой же операционной системой (и подобной архитектурой) и там запущены.

    Программа во время запуска может принимать параметры. Они являются аргументами функции main. Общий вид функции main следующий

    Первым аргументом argc является число переданных функции параметров. Второй аргумент – массив строк – собственно сами параметры. Так как параметры у функции могут быть любыми, то они передаются как строки, и уже сама программа должна их разбирать и приводить к нужному типу.

    Первым аргументом (argv[0]) всегда является имя программы. При этом имя выводится в зависимости от того, откуда была запущена программа.

    Первый аргумент — это имя программы

    Теперь научимся немного работать с командной строкой. Это понадобится для того, чтобы передавать аргументы нашей программе. Сочетание клавиш Win+R вызывает окно «Выполнить». Наберите в нём cmd и вы откроете командную строку. Также можно найти cmd.exe поиском в меню Пуск. В юникс-подобных операционных системах можно вызвать программу «терминал».

    Мы не будем изучать сколько-нибудь много команд. Только те, которые понадобятся в работе.

    Стандартная для всех операционных систем команда cd осуществляет переход к нужной папке. Существует два зарезервированных имени — . (точка) и .. (две точки). Точка — это имя текущей папки.

    никуда не переходит

    .. обращение к родительской папке

    переход в родительскую папку

    Для перехода по нужному пишется cd адрес. Например, нужно перейти на windows в папку C:\Windows\System32

    В линуксе если нужно перейти в папку /var/mysql

    Если путь содержит пробелы, то он пишется в двойных кавычках

    cd «D:\Docuents and Settings\Prolog»

    Терминал имеет следующие полезные особенности: если нажать стрелку вверх, по появится предыдущая выполненная команда. Если нажать tab, то терминал попытается дополнить строку до известной ему команды, или дополнить путь, перебирая все папки и файлы в текущей папке.
    Наберите cd C:\
    нажимайте tab и смотрите, что происходит.

    Ещё одна важная команда dir на windows и ls на linux, выводит на консоль содержимое текущей папки (той папки, в которой вы находитесь в данный момент)

    Ваша программа вернула своё полное имя. Перейдите в папку, где располагается ваша программа и посмотрите её содержимое

    Переходим в папку, в которой располагается наша программа и смотрим содержимое

    Теперь, после того, как мы перешли в нашу папку, можно выполнить нашу программу. Для этого наберите её имя.

    Вызов программы из командной строки

    Заметьте — имя изменилось. Так как программа вызывается из своей папки, то выводится относительно имя. Теперь изменим программу и сделаем так, чтобы она выводила все аргументы. которые ей переданы.

    Соберите проект. Перед сборкой убедитесь, что программа закрыта. Теперь вызовите программу, передав ей разные аргументы. Для этого напишите имя программы и через пробел аргументы

    Передача аргументов программе

    Давайте теперь напишем программу, которая получает два аргумента числа и выводит их сумму

    Соберём и вызовем

    Функция принимает в качестве аргументов два числа

    Таким образом работает большинство программ. Кликая на ярлык, вы вызываете программу, на которую он ссылается. Большинство программ также принимают различные аргументы. Например, можно вызвать браузер firefox из командной строки и передать аргументы
    firefox.exe «www.mozilla.org» «learnc.info» и он сразу же откроет в двух вкладках сайты по указанным адресам.

    Многие стандартные команды также имеют параметры. В windows принято, что они начинаются с прямого слеша, в юниксе с минуса или двух минусов. Например

    выводит только папки, а в терминале linux

    ls -l выводит все файлы и папки с указанием атрибутов

    Для просмотра дополнительных команд windows наберите в командной строке help или смотрите руководство (его легко найти в интернете). Для линукса команд и их опций гораздо больше, а некоторые из них являются самостоятельными языками программирования, так что стоит выучить хотя бы минимальный набор и их опции.

    Передача аргументов в сценарий/скрипт

    Не раз встречаю в технической литературе где %1 %2 %3 %4 %5 %6 %7 %8 %9 в теме по Передача аргументов в сценарии\скрипт описывают как параметр или как формальный параметр.

    И вот вопрос:
    Разве %1 %2 %3 %4 %5 %6 %7 %8 %9 это не переменная?

    Передача аргументов bat-файлу
    Написать командый файл который: 1)принимает в качестве параметра полное имя файла.

    Количество аргументов командной строки, переданных в скрипт
    Добрый день. Разыскивается аналог bash-оператора $# для cmd Т.е. какое кол-во параметров мы.

    Передача чисел и других аргументов пакетному файлу
    1) Запрашивает у пользователя строку в виде числа 2) Вызывает файл 1.bat, передавая ему строку 3).

    Как пользоваться аргументами я понимаю. Меня лишь смущает описание этих символов %1 %2 %3 как оператор а не как переменная в которую по сути подставляются аргументы передаваемая из сценария.

    Если я в чем то ошибаюсь, пожалуйста, подправьте меня.

    Решение

    Тематические курсы и обучение профессиям онлайн
    Профессия Cпециалист по кибербезопасности (Skillbox)
    DevOps-инженер (Нетология)
    Профессия DevOps-инженер PRO (Skillbox)

    Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

    Передача N параметров в скрипт
    Добрый день! Помогите написать batник, который спрашивает число параметров, потом читает каждый.

    Передача переменных из bat-файла в Python-скрипт
    Здравствуйте. Нигде не нашел ответа на свой вопрос. Что нужно написать в батнике, чтобы.

    Передача параметров в сценарий
    Доброго времени суток! Недавно начал пытаться кодить для web, в частности на php и столкнулся со.

    Передача параметров из сценария в сценарий
    Доброго времени суток! Задача такая: есть сценарий, допустим mod1, в который передаются параметры.

    cmd cmd

    Запускает новый экземпляр интерпретатора команд Cmd.exe. Starts a new instance of the command interpreter, Cmd.exe. Если используется без параметров, Команда cmd отображает версию и сведения об авторских правах операционной системы. If used without parameters, cmd displays the version and copyright information of the operating system.

    Синтаксис Syntax

    Параметры Parameters

    Параметр Parameter Описание Description
    /C /c Выполняет команду, указанную в строке , а затем останавливается. Carries out the command specified by string and then stops.
    /k /k Выполняет команду, указанную в строке , и продолжит. Carries out the command specified by string and continues.
    /s /s Изменяет обработку строки после /c или /k. Modifies the treatment of string after /c or /k.
    /q /q Отключает вывод. Turns the echo off.
    /d /d Отключает выполнение команд AutoRun. Disables execution of AutoRun commands.
    /a /a Форматирует выходные данные внутренней команды в канал или файл как Американский национальный институт стандартов (ANSI) (ANSI). Formats internal command output to a pipe or a file as American National Standards Institute (ANSI).
    /U /u Форматирует выходные данные внутренней команды в канал или файл в Юникоде. Formats internal command output to a pipe or a file as Unicode.
    /t: < | > /t: < | > Задает цвета фона (b) и переднего плана (f). Sets the background (b) and foreground (f) colors.
    /e: вкл. /e:on Включает расширения команд. Enables command extensions.
    /e: выкл. /e:off Отключает расширения команд. Disables commands extensions.
    /f: вкл. /f:on Включает завершение имени файла и каталога. Enables file and directory name completion.
    /f: выкл. /f:off Отключает завершение имен файлов и каталогов. Disables file and directory name completion.
    /v: вкл. /v:on Включает отложенное расширение переменных среды. Enables delayed environment variable expansion.
    /v: выкл. /v:off Отключает отложенное расширение переменных среды. Disables delayed environment variable expansion.
    Указывает команду, которую требуется выполнить. Specifies the command you want to carry out.
    /? /? Отображение справки в командной строке. Displays help at the command prompt.

    В следующей таблице перечислены допустимые шестнадцатеричные цифры, которые можно использовать в качестве значений для параметров и . The following table lists valid hexadecimal digits that you can use as the values for and :

    Значение Value Color Color
    0 0 Черный Black
    1 1 Синий Blue
    2 2 Зеленый Green
    3 3 Aqua Aqua
    4 4 Красный Red
    5 5 Сиреневый Purple
    6 6 Желтый Yellow
    7 7 Белый White
    8 8 Серый Gray
    9 9 Светло-синий Light blue
    а a светло-зеленый Light green
    b b Светло-голубой Light aqua
    с c Светло-красный Light red
    d d Светло-фиолетовый Light purple
    й e Светло-желтый Light yellow
    f f Светлое белое Bright white

    Remarks Remarks

    Чтобы использовать несколько команд для , разделите их по разделителю команд && и заключите их в кавычки. To use multiple commands for , separate them by the command separator && and enclose them in quotation marks. Пример: For example:

    При указании параметра /c или /k, Команда cmd , оставшаяся часть строки и кавычки сохраняются только при соблюдении всех следующих условий. If you specify /c or /k, cmd processes, the remainder of string, and the quotation marks are preserved only if all of the following conditions are met:

    Кроме того, не используется параметр /s. You don’t also use /s.

    Вы используете ровно один набор кавычек. You use exactly one set of quotation marks.

    В кавычки не используются специальные символы (например, & () @ ^ |). You don’t use any special characters within the quotation marks (for example: & ( ) @ ^ | ).

    В кавычках используется один или несколько пробельных символов. You use one or more white-space characters within the quotation marks.

    Строка в кавычках — это имя исполняемого файла. The string within quotation marks is the name of an executable file.

    Если предыдущие условия не выполнены, строка обрабатывается путем проверки первого символа, чтобы проверить, является ли он открывающей кавычкой. If the previous conditions aren’t met, string is processed by examining the first character to verify whether it is an opening quotation mark. Если первый символ является открывающей кавычкой, он удаляется вместе с закрывающей кавычкой. If the first character is an opening quotation mark, it is stripped along with the closing quotation mark. Любой текст, следующий за закрывающими кавычками, сохраняется. Any text following the closing quotation marks is preserved.

    Если не указать параметр /d в строке, Cmd.exe ищет следующие подразделы реестра: If you don’t specify /d in string, Cmd.exe looks for the following registry subkeys:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ

    Если имеется один или оба подраздела реестра, они выполняются перед всеми остальными переменными. If one or both registry subkeys are present, they’re executed before all other variables.

    Неправильное изменение реестра может серьезно повредить систему. Incorrectly editing the registry may severely damage your system. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере. Before making changes to the registry, you should back up any valued data on the computer.

    Вы можете отключить расширения команд для определенного процесса, используя /e: Off. You can disable command extensions for a particular process by using /e:off. Вы можете включить или отключить расширения для всех параметров командной строки cmd на компьютере или сеансе пользователя, задав следующие значения REG_DWORD . You can enable or disable extensions for all cmd command-line options on a computer or user session by setting the following REG_DWORD values:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD

    Присвойте параметру REG_DWORD значение 0 × 1 (включено) или 0 × 0 (отключено) в реестре с помощью Regedit.exe. Set the REG_DWORD value to either 0×1 (enabled) or 0×0 (disabled) in the registry by using Regedit.exe. Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра. User-specified settings take precedence over computer settings, and command-line options take precedence over registry settings.

    Неправильное изменение реестра может серьезно повредить систему. Incorrectly editing the registry may severely damage your system. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере. Before making changes to the registry, you should back up any valued data on the computer.

    При включении расширений команд затрагиваются следующие команды: When you enable command extensions, the following commands are affected:

    assoc assoc

    call call

    chdir (CD) chdir (cd)

    color color

    Del (стирание) del (erase)

    endlocal endlocal

    for for

    ftype ftype

    goto goto

    if if

    mkdir (MD) mkdir (md)

    popd popd

    prompt prompt

    pushd pushd

    set set

    setlocal setlocal

    shift shift

    Start (также включает изменения во внешние командные процессы) start (also includes changes to external command processes)

    При включении отложенного расширения переменных среды можно использовать символ восклицательного знака для замены значения переменной среды во время выполнения. If you enable delayed environment variable expansion, you can use the exclamation point character to substitute the value of an environment variable at run time.

    По умолчанию завершение имени файла и каталога не включено. File and directory name completion is not enabled by default. Можно включить или отключить завершение имени файла для определенного процесса команды cmd с параметром /f:<On | Off>. You can enable or disable file name completion for a particular process of the cmd command with /f:<on | off>. Можно включить или отключить завершение имени файла и каталога для всех процессов команды cmd на компьютере или сеанса входа пользователя, задав следующие значения REG_DWORD . You can enable or disable file and directory name completion for all processes of the cmd command on a computer or for a user logon session by setting the following REG_DWORD values:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD

    Чтобы задать значение REG_DWORD , выполните Regedit.exe и используйте шестнадцатеричное значение управляющего символа для конкретной функции (например, 0 × 9 — TAB, а 0 × 08 — это BACKSPACE). To set the REG_DWORD value, run Regedit.exe and use the hexadecimal value of a control character for a particular function (for example, 0×9 is TAB and 0×08 is BACKSPACE). Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра. User-specified settings take precedence over computer settings, and command-line options take precedence over registry settings.

    Неправильное изменение реестра может серьезно повредить систему. Incorrectly editing the registry may severely damage your system. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере. Before making changes to the registry, you should back up any valued data on the computer.

    Если включить завершение имен файлов и каталогов с помощью /f: on, используйте сочетание клавиш CTRL + D для завершения имен каталогов и Ctrl + f для завершения имени файла. If you enable file and directory name completion by using /f:on, use CTRL+D for directory name completion and CTRL+F for file name completion. Чтобы отключить определенный символ завершения в реестре, используйте значение пробела [0 × 20], так как оно не является допустимым управляющим символом. To disable a particular completion character in the registry, use the value for white space [0×20] because it is not a valid control character.

    При нажатии клавиш CTRL + D или CTRL + F обрабатывается завершение имени файла и каталога. Pressing CTRL+D or CTRL+F, processes the file and directory name completion. Эти функции сочетания клавиш добавляют символ-шаблон к строке (если он отсутствует), формирует список совпадающих путей, а затем отображает первый соответствующий путь. These key combination functions append a wildcard character to string (if one is not present), builds a list of paths that match, and then displays the first matching path.

    Если ни один из путей не соответствует, функция завершения имени файла и каталога выдает звуковой сигнал и не изменяет отображение. If none of the paths match, the file and directory name completion function beeps and does not change the display. Для перемещения по списку совпадающих путей нажмите клавиши CTRL + D или CTRL + F несколько раз. To move through the list of matching paths, press CTRL+D or CTRL+F repeatedly. Для перемещения по списку назад нажмите клавишу SHIFT и CTRL + D или CTRL + F одновременно. To move through the list backwards, press the SHIFT key and CTRL+D or CTRL+F simultaneously. Чтобы отменить сохраненный список совпадающих путей и создать новый список, измените строку и нажмите клавиши CTRL + D или CTRL + F. To discard the saved list of matching paths and generate a new list, edit string and press CTRL+D or CTRL+F. Если переключиться между сочетаниями Ctrl + D и CTRL + F, сохраненный список соответствующих путей отбрасывается и создается новый список. If you switch between CTRL+D and CTRL+F, the saved list of matching paths is discarded and a new list is generated. Единственное различие между сочетаниями клавиш Ctrl + d и Ctrl + f заключается в том, что сочетание клавиш Ctrl + d соответствует именам каталогов, а сочетание клавиш CTRL + F соответствует именам файлов и каталогов. The only difference between the key combinations CTRL+D and CTRL+F is that CTRL+D only matches directory names and CTRL+F matches both file and directory names. Если вы используете автозаполнение имен файлов и каталогов во всех встроенных командах каталога (т. е. CD, MD или RD), предполагается завершение каталога. If you use file and directory name completion on any of the built-in directory commands (that is, CD, MD, or RD), directory completion is assumed.

    Имя файла и каталога правильно обрабатывает имена файлов, которые содержат пробелы или специальные символы, если они заключены в кавычки для соответствующего пути. File and directory name completion correctly processes file names that contain white space or special characters if you place quotation marks around the matching path.

    Необходимо использовать кавычки для следующих специальных символов: & [] | < >^ = ; ! You must use quotation marks around the following special characters: & [ ] | < >^ = ; ! ‘ +, ‘

    Если предоставленные сведения содержат пробелы, заключите текст в кавычки (например, «имя компьютера»). If the information that you supply contains spaces, you must use quotation marks around the text (for example, «Computer Name»).

    Если обработка имени файла и каталога выполняется из строки, любая часть пути справа от курсора отбрасывается (в точке, где обработано завершение). If you process file and directory name completion from within string, any part of the path to the right of the cursor is discarded (at the point in string where the completion was processed).

    Читайте также:  Как удалить docker mac os
    Оцените статью