让 .bat 请求进一步输入

让 .bat 请求进一步输入

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

D:\some\folders>do ^
More? stuff

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

do ^

我运行它并期望它要求输入,More?以便我可以输入stuff。但是它没有。它永远什么都不做。我该如何让它工作?

答案1

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

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

echo This ^
is a single ^
line!

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

echo This is a single line!

如果批次中没有“下一行”,就像您的单行批次示例中那样do ^,就没有下一行可以附加,因此它不会附加任何内容(因此似乎什么也不做)。

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

Y:\>echo This ^
More? is a single ^
More? line!
This is a single line!

要使批处理文件停止并提示输入,您需要研究使用set /p,它将提示输入,然后将该输入分配给变量。例如:

set /P name="What Is Your Name? "
echo Hello %name%!

答案2

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

set /p stuff=What stuff do you want to do?:

这样会提示“你想做什么事情?”然后你就可以输入这些内容,这些内容将会被保存在 %stuff% 变量中,你可以在脚本的其他地方使用它们。

相关内容