3

我想在 DOS 批处理中得到这种结果:

==> Please enter your filename, formatted as
    [user][PC_id] : 

允许用户在“:”之后输入文件名

我尝试了很多组合,但我能得到最好的

ECHO --^> Please enter your filename, formatted as
Set /P FILE=[user][PC_id] :

(“[”前的空格不显示)

4

3 回答 3

3

您对 Vista/Win7 中引入的功能有疑问。
使用时,它会去除字符串前面的所有空白字符set/p

但是在您的情况下,这很容易,因为您想回显两行。

@echo off
setlocal EnableDelayedExpansion
set LF=^


set /p "file=--> Please enter your filename, formatted as!LF!    [user][PC_id]"
于 2012-11-21T09:10:39.993 回答
2

当您打印 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"
于 2012-11-21T15:31:24.140 回答
2

另一种变体:

exit | cmd /k prompt -$G Please enter your filename, formatted as$_$s$s$s[user][PC_id]$s
set /p FILE=

echo %FILE%
于 2012-11-26T06:44:43.240 回答