set /p中的/p是什么意思?

What does /p mean in set /p?

/pset /p=中代表什么?我知道 / 启用了一个开关,而且我很确定我知道 /a 用于 arithmetic。我听过很多谣言,有人说 /p 代表 prompt,也有人说它代表 print。我有点怀疑它是 prompt 的唯一原因是因为在许多情况下它不要求提示,而是在屏幕上打印,例如

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

但我想知道的是:我们真的知道它代表什么吗?

为了将来参考,您可以使用 /? 开关获得任何命令的帮助,其中应该解释什么开关的作用。

根据 set /? 屏幕,set /p 的格式是 SET /P variable=[promptString],这表明 /p 中的 p 是“提示”。它只是在您的示例中打印,因为 <nul 传入一个 nul 字符,该字符会立即结束提示,因此它只是 acts 就像它正在打印一样。它仍然在技术上提示输入,只是立即接收它。


注意:这一点以下的答案是针对该问题的先前版本。

/L in 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.

/P 开关允许您将变量的值设置为用户输入的一行输入。在读取输入行之前显示指定的 promptString。 promptString 可以为空。

我使用它的两种方式...首先:

SET /P variable=

当批处理文件到达这一点时(留空时),它将停止并等待用户输入。然后输入变为变量。

第二个:

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

将变量设置为 txt 文件的内容(第一行)。除非包含 /P,否则此方法将不起作用。两者都在 Windows 8.1 Pro 上进行了测试,但在 7 和 10 上是一样的。