在 set /p 中,/p 是什么意思?

51
/pset /p=中代表什么意思?我知道/用于开启一个选项,我相当确定我知道/a是为了做算术运算。我听说过各种传言,有人说/p是代表提示(prompt),也有人说它代表打印(print)。我稍微怀疑它代表提示(prompt)的唯一原因是在许多情况下它不会要求提示,而是直接在屏幕上打印输出,比如...
<nul set /p=This will not generate a new line

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


在命令提示符中键入“help”。对于列出的每个命令,键入“help <command>”(例如“help dir”)或“<command> /?”(例如“dir /?”)。使用重定向只是自动化一个从StdIn读取的命令。请参见http://stackoverflow.com/questions/31820569/trouble-with-renaming-folders-and-sub-folders-using-batch以获取标点符号。 - user6017774
2个回答

61

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

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

SET /P variable=

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

其次:

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

将变量设置为 txt 文件中的内容 (第一行)。如果没有包含 /P,这种方法将无法正常工作。测试结果适用于 Windows 8.1 Pro,并且在 7 和 10 上也是相同的。


5
谢谢您提供这个额外的答案,它让我更容易理解了。我刚从谷歌过来寻找简单的解释,有时候如果已经有一个被接受的答案,人们就不会再发表其他的答案了。 - gamingexpert13
3
这应该是被标记为答案的回复。其他人回复时,得到一个简单的答案就像拔牙一样费劲。不应该是这样的。 - Tastybrownies
请澄清一下,/P 是设置 CMD 变量还是环境变量的值? - edddd

35

为了以后的参考,您可以使用 /? 开关获取任何命令的帮助,该开关应该解释哪个开关做什么。

根据 set /? 屏幕显示,set /p 的格式是SET /P variable=[promptString],这表明 /p 中的 p 是“提示”(prompt)的意思。它在您的示例中只是打印,因为<nul传递了一个空字符,它会立即结束提示,所以它只是像打印一样表现。从技术上讲,它仍然在提示输入,只是立即接收到输入。


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.

1
我已经知道他们做了什么,也知道[command]/?的语法,但是因为我已经知道它们做了什么,所以从来没有想过使用它。但是现在看到了,在/?菜单中解释的方式更加通俗易懂,可以解释为什么缩写是什么 - 我总是使用像ss64.com这样的东西。接受,好答案。 - blaizor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接