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

しかし、あなたの場合、2本の線をエコーし​​たいので簡単です。

@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

jebのソリューションは、2行を印刷するときに正常に機能します。ただし、先頭にスペースを入れて1行だけを印刷する場合に機能する一般的なソリューションがあります。必要なのはバックスペース文字だけです。

@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 に答える