<nul set /p=text
Sonunda bir satır beslemesi olmadan bir dize (metin istemi) yankılanmak için bir hiledir, bu nedenle imleç aynı satırda kalır ve daha sonra satırın başlangıcına (satır başı gönderme) üzerine yazabiliriz.
Belirtilen cevapta bulduğunuz sorun, içindeki davranış değişikliğidir set /p
. Windows XP'ye kadar, set /p
komut metin isteminin başında boşluk ekleyebildi, ancak Vista'dan beyaz karakterler istemin başlangıcından kaldırıldı. Dizenin başlangıcında satır başı gönderemezsiniz. Ama başka bir yerde kullanabilirsin
@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
<nul set /p"=This is the line 1 !CR!"
<nul set /p"=This is the line 2 "
Yani, CR
satırın başında göndermek yerine , önceki satırın sonuna gönderilir.
Diğer bir seçenek ise, önceki komut isteminin başlangıcı olarak farklı bir karakter eklemektir CR
. Görünür bir karakter eklemek, bir sonraki satırda üzerine yazılması gerektiğinden, görülememesi için başka bir sorun oluşturur. Bir geri alma (ascii 0x08
) güvenli (genellikle) bir seçenektir
@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
for /f %%a in ('"prompt $H&for %%b in (0) do rem"') do set "BS=%%a"
<nul set /p"=This is the line 1"
<nul set /p"=!BS!!CR!This is the line 2"