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

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

<nul set /p=This will not generate a new line

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

Бонусные очки для тех, кто знает, что означают все переключатели для ping, такие как -n, -w, -a, -s и что переключатель /L в for предназначен для поддержки. (L = номер?)

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

Пожалуйста, поймите, что я уже знаю, что все эти переключатели и префиксы и что-то не так, я не прошу их смысла и цели. Спасибо заранее.

Ответ 1

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

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

/L в for /L генерирует L число чисел.

От ping /?:

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

Options:
    -t             Ping the specified host until stopped.
                   To see statistics and continue - type Control-Break;
                   To stop - type Control-C.
    -a             Resolve addresses to hostnames.
    -n count       Number of echo requests to send.
    -l size        Send buffer size.
    -f             Set Don't Fragment flag in packet (IPv4-only).
    -i TTL         Time To Live.
    -v TOS         Type Of Service (IPv4-only. This setting has been deprecated
                   and has no effect on the type of service field in the IP Header).
    -r count       Record route for count hops (IPv4-only).
    -s count       Timestamp for count hops (IPv4-only).
    -j host-list   Loose source route along host-list (IPv4-only).
    -k host-list   Strict source route along host-list (IPv4-only).
    -w timeout     Timeout in milliseconds to wait for each reply.
    -R             Use routing header to test reverse route also (IPv6-only).
    -S srcaddr     Source address to use.
    -4             Force using IPv4.
    -6             Force using IPv6.

Ответ 2

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

Два способа я использовал это: сначала:

SET /P variable=

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

И второе:

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

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