如何批量将换行符放入 "set /p"

How do I put a newline inside a "set /p" in batch

我正在尝试在 set /p 变量提示中插入一个新行,这是一个示例。

set /p variableName=[1] - this\n[2] - or this

output:
[1] - this
[2] - or this

恐怕不是你想的那样。

我找到了 this,并创建了以下代码,其中变量 PText 包含您想要的行,然后用作 SET /P 命令中的提示符:

@ECHO OFF
SET PText=[1] - this^& ECHO;[2] - or this
SET /P variableName=%PText%
ECHO;Answer=[%variableName%]

当我 运行 代码时,它打印 [1] - this,我回答 ABC 并按回车,然后它打印 [2] - or this,然后是 ECHO 命令打印 Answer=[ABC]:

[1] - thisABC
[2] - or this
Answer=[ABC]

我相信唯一真正的答案是 ECHO 在执行 SET /P 之前你想要什么,或者使用 this page 中描述的 CHOICE 命令.

示例SET /P

ECHO;[1] - this
ECHO;[2] - or this
SET /P variableName=[1,2]?

就像 SomethingDark 建议的那样,您可以简单地使用 echo 作为行

echo [1] This
set /p "var=[2] - or this "

但是如果你坚持只使用 set /p 可以用

@echo off
setlocal EnableDelayedExpansion

(set \n=^
%=empty=%
)
set /p "var=[1] This!\n![2] or this"

要在文本中实际插入一个换行符:

@echo off
setlocal enabledelayedexpansion
set nl=^


::The Above empty lines are critical for this function, do not delete.
set /p "var=[1] - this!nl![2] - or this!nl!"
echo %var%

我个人不确定您为什么不为此使用 choice

echo [1] - This & echo [2] - or this & choice /c 12