Batch file 批处理文件-选择,缩进提示

Batch file 批处理文件-选择,缩进提示,batch-file,Batch File,我在批处理文件中使用choice来显示这样的提示 :choice set /P "c= Is this Correct? (Y/N)" if /I "%c%" EQU "Y" goto :movespot if /I "%c%" EQU "N" goto :exitspot goto :choice 它工作正常,但忽略了“是否正确”中的空格?(是/否)“我正试图使用它来缩进回声 还有其他方法吗?这里有一个代码解决方案,可以在集合/p输出中打印空格 @echo off for /f %%a in

我在批处理文件中使用choice来显示这样的提示

:choice
set /P "c= Is this Correct? (Y/N)"
if /I "%c%" EQU "Y" goto :movespot
if /I "%c%" EQU "N" goto :exitspot
goto :choice
它工作正常,但忽略了“是否正确”中的空格?(是/否)“我正试图使用它来缩进回声


还有其他方法吗?

这里有一个代码解决方案,可以在
集合/p
输出中打印空格

@echo off
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"

set /P "c=X%BS%          Is there 10 spaces before? (Y/N)"

对于此类是/否选择,我建议使用,因为它不接受除
Y
/
N
以外的条目(Ctrl+C和Ctrl+Break除外,但您也可以使用它们中止
set/p

然而,
choice
会删除前导空格,就像
set/p
;它甚至删除了尾随的。虽然演示的也适用于此处,但对于双方:

for/F%%C in('prompt$H^&for%%#in^(.^)do rem/')do set“BS=%%C”
set/P C=“%BS%是否有前导空格和(保留)尾随空格?”
选项/M“\u%BS%是否有一个前导空格和两个尾随空格?\u%BS%”/N

请注意,
choice
如果指定了提示文本(
/M
)。前面提到的两个尾随空格中的一个是附加的。默认情况下,
choice
追加选项列表(
[Y,N]
),除非给出了
/N

是<代码>设置/P执行时将删除所有前导空格。有一个技巧是在开始时使用空格,但需要首先将退格捕获到变量中。然后你可以这样做:
set/P“c=X%bs%是否正确?(Y/N)”
对我来说,这给了我退格前的X你找到如何将退格字符设置为变量的代码了吗?可能的解决方案:尝试,然后在第二步中执行
set/P
或尝试
For/F%%B in('prompt$H^&For%%#in^(.^)do rem/')do set“bs=%C”
将空格字符放入变量
bs
ans重试Squashman的建议。。。