让 .bat 请求进一步输入

Blr*_*lrp 6 batch-file cmd.exe

如果我在 cmd 中以 结束一行^,它将要求更多输入。

D:\some\folders>do ^
More? stuff
Run Code Online (Sandbox Code Playgroud)

假设do我不想每次做事情时都输入,所以我把它放在一个 .bat 中,假设stuff每次我想做的事情都不一样。所以我创建了以下 .bat 文件:

do ^
Run Code Online (Sandbox Code Playgroud)

我运行它并期望它要求More?这样我就可以输入我的stuff. 但事实并非如此。它永远无所作为。我如何使它工作?

Ƭᴇc*_*007 11

^字符是批处理文件的“转义”字符。在一行的末尾单独使用时,它变成了一个行继续符,用于将多行视为单行。

因此,在批处理文件中,如果您输入

echo This ^
is a single ^
line!
Run Code Online (Sandbox Code Playgroud)

它将其视为单行,相当于:

echo This is a single line!
Run Code Online (Sandbox Code Playgroud)

如果批处理中没有“下一行”,就像在 的单行批处理示例中一样do ^,则没有要追加的下一行,因此它不会追加任何内容(因此似乎什么也不做)。

当您^在命令提示符下使用line-continuation 时,它会向您显示More?提示,因为您告诉它要在下一行继续该命令,此时您可以继续该命令,例如:

Y:\>echo This ^
More? is a single ^
More? line!
This is a single line!
Run Code Online (Sandbox Code Playgroud)

要让批处理文件停止并提示输入,您需要考虑 using set /p,它将提示输入,然后将该输入分配给一个变量。例如:

set /P name="What Is Your Name? "
echo Hello %name%!
Run Code Online (Sandbox Code Playgroud)


小智 9

如果您希望批处理提示您输入,您将使用 set /p。例如,要创建一个可以在批处理中使用的变量 %stuff%,该命令将如下所示。

set /p stuff=What stuff do you want to do?:
Run Code Online (Sandbox Code Playgroud)

这将提示“你想做什么?” 并且您可以输入内容,然后这将在 %stuff% 变量中,您可以在脚本的其他地方使用。


归档时间:

查看次数:

69431 次

最近记录:

9 年,10 月 前