Help по коммандам MS DOS

Help по коммандам MS DOS

set


Вывод, задание и удаление переменных среды cmd.exe.

SET [переменная=[строка]]

  переменная  Имя переменной среды.
  строка      Строка символов, присваиваемая указанной переменной.

Введите SET без параметров для вывода текущих переменных среды.

Изменение команды SET при включении расширенной обработки команд:

Если при вызове указать только имя переменной без знака равенства и значения,
команда SET выведет значения всех переменных, имя которых начинается
с указанной строки.  Например:

    SET P

Эта команда выведет значения всех переменных, имена которых начинаются с 'P'.

Если имя переменной не найдено в текущей среде, при возврате команда SET
установит значение ошибки ERRORLEVEL 1.

Команда SET не допускает использование знака равенства в имени 
переменной среды.

Команда SET поддерживает два дополнительных ключа:

    SET /A выражение
    SET /P variable=[promptString]

Ключ /A указывает, что строка справа от знака равенства является числовым
выражением, значение которого вычисляется.
= |= >= , - разделитель операторов При использовании любых логических или двоичных операторов необходимо заключить строку выражения в кавычки. Любые нечисловые строки в выражении рассматриваются как имена переменных среды, значения которых преобразуются в числовой вид перед использованием. Если переменная с указанным именем не определена в системе, вместо нее подставляется нулевое значение. Это позволяет выполнять арифметические операции со значениями переменных среды, причем не нужно вводить знаки % для получения значений. Если команда SET /A вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения. Слева от любого оператора присваивания должно стоять имя переменной среды. Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел, и 0 для восьмеричных чисел. Например, числа 0x12, и 022 обозначают десятичное число 18.
Обратите внимание на запись восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в восьмеричной системе исчисления цифры 8 и 9 не используются. Ключ /P позволяет установить значение переменной для входной строки, введенной пользователем. Показывает указанное приглашение promptString перед чтением введенной строки. Приглашение promptString может быть пустым. Подстановка переменной среды может быть расширена следующим образом: %PATH:str1=str2% расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в расширенном результате на "str2". "str2" может быть пустой строкой для эффективного удаления вхождений "str1" из расширенного вывода. "str1" может начинаться со звездочки, и в этом случае это будет соответствовать любому началу расширенного вывода до первого вхождения оставшейся части "str1". Можно также использовать строки расширения. %PATH:~10,5% расширит действие переменной среды PATH, затем использует только 5 символов, которые начинаются с 11-го символа (пропустив 10) расширенного результата.
Если длина не указана, по умолчанию используется оставшееся значение переменной. Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины. %PATH:~-10% извлечет последние 10 символов переменной PATH. %PATH:~0,-2% извлечет все символы переменной PATH, за исключением 2-х последних. Наконец, добавлена поддержка связывания времени выполнения для переменных среды окружения. По умолчанию эта поддержка отключена. Ключ /V командной строки CMD.EXE позволяет включать и выключать ее. Для вызова справки, наберите CMD /? Связывание времени выполнения для переменных среды окружения полезно при обходе ограничений раннего связывания, которое происходит при первом чтении текстовой строки, а не при ее выполнении. Следующий пример демонстрирует возникающую проблему при использовании раннего связывания переменных: set VAR=before if "%VAR%" == "before" ( set VAR=after if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения ) Данное сообщение не будет выводиться, т.
к. %VAR% в ОБОИХ выражениях IF подставляется в момент первого использования в первом IF, в том числе и в тело первого ветвления IF, которое является составным выражением. В IF внутри составного выражения в действительности сравниваются значения "before" и "after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку: set LIST= for %i in (*) do set LIST=%LIST% %i echo %LIST% в данном случае список файлов текущей папки никогда не будет построен. Вместо этого, значением переменной LIST будет имя последнего найденного файла. И вновь, это случилось потому, что %LIST% подставляется всего один раз - в момент обработки выражения FOR, когда список еще пуст. Фактически, приведенный фрагмент эквивалентен следующему примеру: for %i in (*) do set LIST= %i в котором имя последнего найденного файла сохраняется в переменной LIST. Связывание времени выполнения для переменных среды окружения происходит при использовании специального символа (восклицательного знака), обозначающего проведение сопоставления во время выполнения.
Если включена поддержка связывания времени выполнения, то для достижения ожидаемых результатов приведенные выше фрагменты должны быть изменены следующим образом: set VAR=before if "%VAR%" == "before" ( set VAR=after if "!VAR!" == "after" @echo Тело внутреннего оператора сравнения ) set LIST= for %i in (*) do set LIST=!LIST! %i echo %LIST% При включенной расширенной обработке команд доступны несколько переменных среды, которые не отображаются в списке, отображаемом при вызове команды SET. Значения этих переменных вычисляются динамически каждый раз при их извлечении. Если пользователь явно задает переменные с одним из этих имен, то это определение перекрывает соответствующее динамическое определение, описанное ниже: %CD% - раскрывается в строку текущей директории. %DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.
%TIME% - раскрывается в текущую дату, используя формат команды TIME. %RANDOM% - раскрывается в случайное десятичное число между 0 и 32767. %ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL %CMDEXTVERSION% - раскрывается в текущее значение версии расширенной обработки команд. %CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала командный процессор.


Командная строка — команда Set



Командная строка — команда Set

Главная страницаПолезноеКомандная строка (CMD)КомандыКоманда Set

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

Синтаксис

set [[/a [выражение]] [/p [переменная=]] строка]

Расшифровка значений

/a

Позволяет говорить о том, что «строка» — это числовое выражение.

). Имеется и другой вариант, который предусматривает применение кавычек для всего параметра «строка».
  • Когда нужно получить данные о действующих установках, следует прописать set – без каких-либо параметров.
  • Допускается обращаться к set непосредственно из пакетного документа. В таком случае, предписывается помещать переменные в специальные символы %.
  • Настройка

    • Microsoft Windows 2000
    • Microsoft Windows XP
    • Microsoft Windows Servers
    • Microsoft Windows Vista
    • Microsoft Windows 7
    • Microsoft Windows 8
    • Microsoft Windows 10

    Полезная информация

    • Синий экран смерти (BSOD)
      • Коды ошибок
      • Способы устранения
    • Командная строка (CMD)
      • Переменные
      • Команды
      • Примеры bat файлов
    • Примеры Rundll32.exe
    • Windows Script Host (WSH)
      • Объект WshShell
      • Объект FileSystemObject
      • Объект RegExp
      • Объект Dictionary
      • Объект Shell
      • Константы VBScript
      • Функции VBScript
      • Объект IE и WebBrowser
      • Объект WScript
      • Объект WshNetwork
    • Basic In/Out System (BIOS)
      • AMI bios
      • AWARD bios
      • Phoenix bios
      • UEFI bios
    • Реестр Windows
      • Хитрости реестра Windows
    • Скачать Live CD
    • Полезные статьи
      • Часто задаваемые вопросы
      • Стоит ли переходить на Windows 10?
      • Не открывается флешка на компьютере?
      • Как разбить жесткий диск на разделы?
      • Удалить баннер с рабочего стола
      • Лучшие бесплатные антивирусы 2016-2017 года
      • Не открывается Вконтакте и другие сайты
      • Как убрать всплывающие сайты и рекламу в браузере

    окон.

    Что означает /p в наборе /p?

    спросил

    Изменено 11 месяцев назад

    Просмотрено 170 тысяч раз

    Что означает /p в наборе /p= ? Я знаю, что / включает коммутатор, и я почти уверен, что знаю /a для арифметика . Я слышал множество слухов, некоторые говорят, что /p означает prompt , другие утверждают, что это означает print . Единственная причина, по которой я немного сомневаюсь, что это приглашение , заключается в том, что во многих случаях он не запрашивает приглашение, но печатает на экране, например,

     

    Но я хочу знать следующее: Действительно ли мы знаем, что это означает?

    • окна
    • пакетный файл
    • аббревиатура

    1

    Переключатель /P позволяет установить значение переменной в строке ввода, введенной пользователем. Отображает указанную строку promptString перед чтением строки ввода. PromptString может быть пустым.

    Я использовал его двумя способами... первый:

     SET /P variable=
     

    Когда пакетный файл достигает этой точки (когда он оставлен пустым), он останавливается и ожидает ввода данных пользователем. Затем ввод становится переменным.

    И второе:

     SET /P variable=<%temp%\filename.txt
     

    Будет установлена ​​переменная для содержимого (первая строка) файла txt. Этот метод не будет работать, если не включен /P . Оба тестировались на Windows 8.1 Pro, но одинаково на 7 и 10.

    3

    Для дальнейшего использования вы можете получить справку по любой команде, используя ключ /? Переключатель , который должен объяснять, какие переключатели что делают.

    Согласно набору /? , формат set /p SET /P variable=[promptString] , что указывает на то, что p в /p является «подсказкой». В вашем примере он просто печатается, потому что проходит в символе nul, который немедленно завершает подсказку, поэтому он просто действует как , как будто он печатает. Технически он по-прежнему запрашивает ввод, он просто немедленно его получает.


    ПРИМЕЧАНИЕ. Ответы ниже этого пункта относятся к предыдущей версии вопроса.

    /L в для /L генерирует L список чисел.

    От пинг/? :

     Использование: ping [-t] [-a] [-n количество] [-l размер] [-f] [-i TTL] [-v TOS]
                [-r количество] [-s количество] [[-j список хостов] | [-k список хостов]]
                [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
    Параметры:
        -t Пинговать указанный хост до тех пор, пока он не будет остановлен.
                       Чтобы посмотреть статистику и продолжить - нажмите Control-Break;
                       Чтобы остановить - нажмите Control-C. 
        -a Преобразовать адреса в имена хостов.
        -n count Количество эхо-запросов для отправки.
        -l размер Отправить размер буфера.
        -f Установить флаг «Не фрагментировать» в пакете (только для IPv4).
        -i Время жизни TTL.
        -v TOS Type Of Service (только для IPv4. Этот параметр устарел)
                       и не влияет на поле типа службы в заголовке IP).
        -r count Записать маршрут для количества переходов (только для IPv4).
        -s count Временная метка для подсчета переходов (только для IPv4).
        -j список-хостов Свободный исходный маршрут по списку-хостов (только для IPv4).
        -k host-list Строгий исходный маршрут по списку хостов (только для IPv4).
        -w timeout Таймаут в миллисекундах для ожидания каждого ответа.
        -R Использовать заголовок маршрутизации также для проверки обратного маршрута (только для IPv6).
        -S srcaddr Исходный адрес для использования.
        -4 Принудительно использовать IPv4.
        -6 Принудительно использовать IPv6.
     

    1

    Зарегистрируйтесь или войдите в систему

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя электронную почту и пароль

    Опубликовать как гость

    Электронная почта

    Требуется, но никогда не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    окон - значение по умолчанию Set /p в пакетном сценарии

    Есть ли способ представить значение по умолчанию в операторе set /p в пакетном сценарии Windows?

    Например, что-то вроде этого:

     set /p MyVar=Мое значение по умолчанию
    эхо $MyVar$
     

    Если пользователь нажимает Enter , не вводя ничего больше, то `MyVar получает это значение по умолчанию.

    Спасибо.

    • окна
    • пакетный файл
    • набор
    • по умолчанию

    2

    Это:

     SET /P "MyVar=" || УСТАНОВИТЕ "MyVar=Мое значение по умолчанию"
     

    (Подробнее).


    Вы также можете использовать это:

     SET /P "MyVar="
    ЕСЛИ НЕ ОПРЕДЕЛЕН MyVar, УСТАНОВИТЕ "MyVar=Мое значение по умолчанию"
     

    4

    Вот один из способов.

    Он установит %1 как myvar , если он определен, затем пропустит приглашение и эхо myvar , иначе он сохранит Значение по умолчанию как значение по умолчанию, но если кто-то введет другое значение, оно перезапишет значение по умолчанию. . Не вы также можете использовать %2 %3 и т. д.

     @echo off
    установить "myvar=%1"
    если "%myvar%"=="" установить /p "myvar=Введите значение: " || установить "myvar = значение по умолчанию"
    эхо %myvar%
     

    , чтобы увидеть результаты, сохраните пакет и запустите из cmdline следующее:

     batchfile.