我想在 DOS 批处理中得到这种结果:
==> Please enter your filename, formatted as
[user][PC_id] :
允许用户在“:”之后输入文件名
我尝试了很多组合,但我能得到最好的
ECHO --^> Please enter your filename, formatted as
Set /P FILE=[user][PC_id] :
(“[”前的空格不显示)
我想在 DOS 批处理中得到这种结果:
==> Please enter your filename, formatted as
[user][PC_id] :
允许用户在“:”之后输入文件名
我尝试了很多组合,但我能得到最好的
ECHO --^> Please enter your filename, formatted as
Set /P FILE=[user][PC_id] :
(“[”前的空格不显示)
您对 Vista/Win7 中引入的功能有疑问。
使用时,它会去除字符串前面的所有空白字符set/p
。
但是在您的情况下,这很容易,因为您想回显两行。
@echo off
setlocal EnableDelayedExpansion
set LF=^
set /p "file=--> Please enter your filename, formatted as!LF! [user][PC_id]"
当您打印 2 行时,jeb 的解决方案工作正常。但是,当您只想打印带有前导空格的单行时,有一个通用的解决方案。您只需要一个退格字符。
@echo off
setlocal
:: Define BS to contain a backspace
for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "BS=%%A"
::Only need %BS% if you know prompt starts at line beginning
Set /P "FILE=%BS% [user][PC_id] : "
::If prompt is not at line beginning then need an extra char before %BS%
<nul set /p "=Part1"
<nul set /p "=.%BS% Part2"
另一种变体:
exit | cmd /k prompt -$G Please enter your filename, formatted as$_$s$s$s[user][PC_id]$s
set /p FILE=
echo %FILE%