Windows batch: echo tanpa baris baru

231

Apa yang setara dengan batch Windows dari perintah shell Linux echo -nyang menekan baris baru di akhir output?

Idenya adalah menulis pada baris yang sama di dalam satu lingkaran.

gregseth
sumber
2
ini membuat saya hampir gila..saya tahu echobisa mengambil -ntetapi cmd.exeitu tidak akan berhasil ^^
panny
11
@panny - Terlepas dari nama umum, gema bukan perintah yang sama antara Windows dan Posix. Sama seperti nslookup, ia memiliki opsi yang berbeda. Jadi komentar "Saya tahu echobisa mengambil -n" dalam konteks pertanyaan yang berkaitan dengan Windows, tidak benar.
user66001

Jawaban:

236

Menggunakan setdan /pparameter yang dapat Anda gema tanpa baris baru:

C:\> echo Hello World
Hello World

C:\> echo|set /p="Hello World"
Hello World
C:\>

Sumber

arnep
sumber
86
Pipa sangat lambat karena menciptakan dua tugas cmd ekstra, lebih cepat <nul set /p =Hello. set /ptidak dapat menggema tanda sama dengan karakter pertama atau spasi / tab.
jeb
11
Ini hampir 15 kali lebih cepat pada sistem saya
jeb
28
Tambahkan tanda kutip di sekitar "Hello World" untuk mencegah ruang asing setelah d.
Brian
13
Peringatan: Ini akan mengubah ERRORLEVEL menjadi 1. Lihat jawaban oleh @xmechanix.
CoperNick
6
@ user246694 < nuladalah pengalihan dari NULperangkat. Ini tidak mengandung apa pun, tapi itu sudah cukup untuk set /pberhenti menunggu input pengguna
jeb
100

Menggunakan: echo | set /p=atau <NUL set /p=keduanya akan bekerja untuk menekan baris baru.

Namun, ini bisa sangat berbahaya ketika menulis skrip yang lebih canggih ketika memeriksa ERRORLEVEL menjadi penting karena pengaturan set /p=tanpa menentukan nama variabel akan menetapkan ERRORLEVEL ke 1.

Pendekatan yang lebih baik adalah dengan hanya menggunakan nama variabel dummy seperti:
echo | set /p dummyName=Hello World

Ini akan menghasilkan apa yang Anda inginkan tanpa ada hal-hal licik yang terjadi di latar belakang karena saya harus mencari cara yang sulit, tetapi ini hanya bekerja dengan versi pipa; <NUL set /p dummyName=Helloakan tetap menaikkan ERRORLEVEL ke 1.

xmechanix
sumber
20
Peringatan: Perintah ini akan mengatur ERRORLEVEL ke 0. Jika ERRORLEVEL lebih besar dari 0 maka akan mengubah ERRORLEVEL menjadi 0. Ini juga bisa berbahaya saat menulis skrip yang lebih maju. (Tapi +1 untuk jawaban)
CoperNick
Jadi pada dasarnya Anda membutuhkan IF ERRORLEVEL == 0 (...) ELSE (...) hanya untuk tidak membahayakan lingkungan Anda dalam keadaan itu. Sheesh.
SilverbackNet
28

Metode SET / P yang sederhana memiliki batasan yang sedikit berbeda di antara versi Windows.

  • Kutipan terkemuka dapat dilucuti

  • Ruang putih terkemuka dapat dilucuti

  • Memimpin =menyebabkan kesalahan sintaksis.

Lihat http://www.dostips.com/forum/viewtopic.php?f=3&t=4209 untuk informasi lebih lanjut.

jeb memposting solusi pintar yang memecahkan sebagian besar masalah pada teks Output tanpa linefeed, bahkan dengan spasi terdepan atau = Saya telah menyempurnakan metode ini sehingga dapat dengan aman mencetak benar-benar semua string batch yang valid tanpa baris baru, pada versi Windows apa pun dari XP dan seterusnya. Perhatikan bahwa :writeInitializemetode ini berisi string literal yang mungkin tidak dikirim dengan baik ke situs. Sebuah komentar disertakan yang menggambarkan urutan karakter apa yang seharusnya.

Metode :writedan :writeVardioptimalkan sedemikian sehingga hanya string yang berisi karakter utama yang merepotkan ditulis menggunakan versi saya yang dimodifikasi dari metode COPY jeb. String yang tidak bermasalah ditulis menggunakan metode SET / P yang lebih sederhana dan lebih cepat.

@echo off
setlocal disableDelayedExpansion
call :writeInitialize
call :write "=hello"
call :write " world!%$write.sub%OK!"
echo(
setlocal enableDelayedExpansion
set lf=^


set "str= hello!lf!world^!!!$write.sub!hello!lf!world"
echo(
echo str=!str!
echo(
call :write "str="
call :writeVar str
echo(
exit /b

:write  Str
::
:: Write the literal string Str to stdout without a terminating
:: carriage return or line feed. Enclosing quotes are stripped.
::
:: This routine works by calling :writeVar
::
setlocal disableDelayedExpansion
set "str=%~1"
call :writeVar str
exit /b


:writeVar  StrVar
::
:: Writes the value of variable StrVar to stdout without a terminating
:: carriage return or line feed.
::
:: The routine relies on variables defined by :writeInitialize. If the
:: variables are not yet defined, then it calls :writeInitialize to
:: temporarily define them. Performance can be improved by explicitly
:: calling :writeInitialize once before the first call to :writeVar
::
if not defined %~1 exit /b
setlocal enableDelayedExpansion
if not defined $write.sub call :writeInitialize
set $write.special=1
if "!%~1:~0,1!" equ "^!" set "$write.special="
for /f delims^=^ eol^= %%A in ("!%~1:~0,1!") do (
  if "%%A" neq "=" if "!$write.problemChars:%%A=!" equ "!$write.problemChars!" set "$write.special="
)
if not defined $write.special (
  <nul set /p "=!%~1!"
  exit /b
)
>"%$write.temp%_1.txt" (echo !str!!$write.sub!)
copy "%$write.temp%_1.txt" /a "%$write.temp%_2.txt" /b >nul
type "%$write.temp%_2.txt"
del "%$write.temp%_1.txt" "%$write.temp%_2.txt"
set "str2=!str:*%$write.sub%=%$write.sub%!"
if "!str2!" neq "!str!" <nul set /p "=!str2!"
exit /b


:writeInitialize
::
:: Defines 3 variables needed by the :write and :writeVar routines
::
::   $write.temp - specifies a base path for temporary files
::
::   $write.sub  - contains the SUB character, also known as <CTRL-Z> or 0x1A
::
::   $write.problemChars - list of characters that cause problems for SET /P
::      <carriageReturn> <formFeed> <space> <tab> <0xFF> <equal> <quote>
::      Note that <lineFeed> and <equal> also causes problems, but are handled elsewhere
::
set "$write.temp=%temp%\writeTemp%random%"
copy nul "%$write.temp%.txt" /a >nul
for /f "usebackq" %%A in ("%$write.temp%.txt") do set "$write.sub=%%A"
del "%$write.temp%.txt"
for /f %%A in ('copy /z "%~f0" nul') do for /f %%B in ('cls') do (
  set "$write.problemChars=%%A%%B    ""
  REM the characters after %%B above should be <space> <tab> <0xFF>
)
exit /b
dbenham
sumber
1
Senang melihat solusi yang sangat kuat yang dapat menangani semua karakter
jeb
2
Saya ingin menunjukkan bahwa jika komputer memiliki koneksi jaringan ke internet yang kira-kira banyak kode batch ini dapat digunakan untuk mengunduh dan menginstal python atau apa pun di komputer yang dapat menghilangkan batch Anda. Batch memang menyenangkan namun kemampuan stringnya paling baik untuk tantangan akhir pekan.
n611x007
@benham pada baris 6 "echo (" secara fungsional sama dengan "echo." - tidak pernah melihatnya sebelumnya.
Lewati R
2
@ SkipR - Ya, secara fungsional sama dengan ECHO., kecuali ECHO.bisa gagal dalam keadaan yang tidak jelas . Ada banyak bentuk lain yang juga bisa gagal dalam situasi yang tidak jelas. Satu-satunya yang selalu berhasil adalah ECHO(.
dbenham
10

Sebagai tambahan untuk jawaban @ xmechanix, saya perhatikan melalui penulisan konten ke file:

echo | set /p dummyName=Hello World > somefile.txt

Bahwa ini akan menambah ruang tambahan di akhir string yang dicetak , yang dapat merepotkan, khususnya karena kami berusaha menghindari menambahkan baris baru (karakter spasi putih lain) ke akhir string.

Untungnya, mengutip string yang akan dicetak, yaitu menggunakan:

echo | set /p dummyName="Hello World" > somefile.txt

Akan mencetak string tanpa baris baru atau karakter spasi di akhir.

Joan Bruguera
sumber
5
Ruang ekstra akan hilang jika Anda tidak menempatkan ruang di antara Worlddan >...
aschipfl
@aschipfl Sudah mencobanya, tidak.
Joan Bruguera
Metode variabel Dikutip, fitur tidak berdokumen dari perintah yang ditetapkan, umumnya bagaimana saya melihatnya harus didekati, karena berfungsi di semua versi WindowsIndows NT (dan 9x jika saya ingat). Itu adalah Anda membungkus nama Variabel ke akhir nilai dalam tanda kutip. Ini berlaku untuk Set / P juga.
Ben Personick
1
IE: echo | set / p "dummyName = Hello World"> somefile.txt
Ben Personick
2
@aschipfl Ruang tambahan akan muncul jika Anda tidak mengutip, dan Anda membuat pipa. xxd adalah utilitas hex dump jadi kita melihat misalnya set /p="abc"<nul|xxd -pmenampilkan 616263 sedangkan set /p=abc<nul|xxd -pmemberi61626320
barlop
9

Solusi untuk ruang putih yang dilucuti dalam SET / P:

Kuncinya adalah karakter backspace yang dapat Anda panggil dalam editor teks EDIT untuk DOS. Untuk membuatnya di EDIT, tekan ctrlP + ctrlH . Saya akan menempelkannya di sini tetapi halaman web ini tidak dapat menampilkannya. Ini terlihat pada Notepad (tidak valid, seperti persegi panjang hitam kecil dengan lingkaran putih di tengah)

Jadi, Anda menulis ini:

<nul set /p=.9    Hello everyone

Titik bisa berupa karakter apa saja, hanya ada di sana untuk memberi tahu SET / P bahwa teks dimulai di sana, sebelum spasi, dan bukan di " Halo ". " 9 " adalah representasi dari karakter backspace yang tidak dapat saya tampilkan di sini. Anda harus meletakkannya bukan angka 9, dan itu akan menghapus " . ", Setelah itu Anda akan mendapatkan ini:

    Hello Everyone

dari pada:

Hello Everyone

Saya harap ini membantu

Pedro
sumber
2
Saya lupa memberi tahu, ini berfungsi di Windows 7 Itu tidak akan bekerja di baris perintah, hanya dalam batch. Bagi siapa pun yang tidak mendapatkan char, unduh contoh ini: pecm.com.sapo.pt/SET_with_backspace_char.txt
Pedro
Juga berlaku untuk Echo
Ben Personick
... Jadi, setelah melakukan pencarian yang sangat teliti, saya belum menemukan ini DI MANA SAJA di internet. Ini mungkin satu-satunya saat saya benar-benar menemukan sesuatu, dan karena keberuntungan. Bagi mereka yang tidak tahu Anda BISA memasukkan karakter kontrol jika Anda menempatkan prompt cmd Anda dalam mode lama dan menggunakan font yang tepat. ... Tetapi jika Anda hanya mengarahkan kembali sesuatu ke file atau> con itu berfungsi juga. Serius. Tempel ini PERSIS ke prompt perintah Anda: "echo ← c◙◙ ○○ Harharhar !! ◙ ○○ ------------- ◙◙ ○○ Saya yang terburuk!?: '(○ ♪ ! ○ NOPE • ♪ ○ saya merasa hebat Hazzah-le-oop ◙◙ ○ saya programmeer mendengar saya ... something.◙> con"!!.
Brent Rittenhouse
Oke, saya harap saya menemukan ini sebelum orang lain tetapi ... ini tampaknya tergantung pada tidak berada di halaman kode unicode. Anda bisa menyimpan yang mulai dalam variabel do chcp 437, atur set dalam variabel, atau output, dan kemudian beralih kembali (dan itu masih harus output). Saya masih bermain-main dengan itu.
Brent Rittenhouse
Juga, apakah ada yang tahu mengapa ← c membersihkan layar ?! Saya tidak dapat menemukan contoh di mana pun di internet. Khususnya kombinasi itu, meskipun Anda tampaknya dapat memiliki spasi putih di antara kedua karakter juga. Untuk karakter lain sepertinya hanya .. menghapus karakter pertama. Saya tidak mengerti ...
Brent Rittenhouse
7

Anda dapat menghapus baris baru menggunakan "tr" dari GnuWin32 ( coreutils paket)

@echo off
set L=First line
echo %L% | tr -d "\r\n"
echo Second line
pause

By the way, jika Anda melakukan banyak scripting, gnuwin32 adalah tambang emas.

BearCode
sumber
Saya juga menyarankan untuk menginstal git bash . yakin itu tidak sama dengan gnuwin32 (dan karena itu merupakan tambang emas +1), ini hanya setup yang bagus, dan Anda memiliki git-bash di tombol kanan mouse hampir di mana-mana termasuk tombol menu mulai.
hakre
dapatkah Anda menggunakan tr untuk menghapus karakter spasi terakhir, seperti di trim?
Panny
gunakan sed untuk trim: sed -e "s / * $ //"
BearCode
@panny - Saya tidak dapat menemukan util posix / linux yang disebut trim. Juga, \r, \natau \r\n(garis baru di OSX, POSIX dan Windows masing-masing) tidak "ruang" karakter.
user66001
5

Berikut adalah metode lain, menggunakan Powershell Write-Host yang memiliki parameter -NoNewLine, menggabungkannya dengan start /bdan menawarkan fungsionalitas yang sama dari batch.

NoNewLines.cmd

@ECHO OFF
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 1 - ';Write-Host -NoNewLine 'Result 2 - ';Write-Host -NoNewLine 'Result 3 - '"
PAUSE

Keluaran

Result 1 - Result 2 - Result 3 - Press any key to continue . . .

Yang di bawah ini sedikit berbeda, tidak bekerja persis seperti yang diinginkan OP, tetapi menarik karena setiap hasil menimpa hasil sebelumnya meniru penghitung.

@ECHO OFF
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 1 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 2 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 3 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 4 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 5 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 6 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 7 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 8 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 9 - '"
PAUSE
Knuckle-Dragger
sumber
3

Dari sini

<nul set /p =Testing testing

dan juga untuk memulai dengan menggunakan spasi

echo.Message goes here
Afdsafnadsjbcewjhwnfy4ntc874fg
sumber
2

Mungkin ini yang Anda cari, ini skrip sekolah lama ...: P

set nl=^& echo. 
echo %nl%The%nl%new%nl%line%nl%is%nl%not%nl%apparent%nl%throughout%nl%text%nl%
echo only in prompt.
pause

atau mungkin Anda mencoba mengganti baris saat ini daripada menulis ke baris baru? Anda dapat bereksperimen dengan ini dengan menghapus "% bs%" setelah "." tandatangani dan juga dengan menghapus "% bs%" lainnya setelah "Contoh pesan".

for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "bs=%%a"
<nul set /p=.%bs%         Example message         %bs%
pause

Saya menemukan ini sangat menarik karena menggunakan variabel untuk tujuan selain apa yang seharusnya dilakukan. seperti yang Anda lihat "% bs%" mewakili backspace. "% Bs%" kedua menggunakan backspace untuk menambahkan spasi setelah "Contoh pesan" untuk memisahkan "Pause output's output" tanpa benar-benar menambahkan karakter yang terlihat setelah "Contoh pesan". Namun, ini juga dimungkinkan dengan tanda persentase reguler.

zask
sumber
2
Saya melihat set nl=^& echo.trik ini di mana-mana dan nama variabelnya menyesatkan. % nl% bukan karakter baris baru : itu meluas &echo.jadi pada akhirnya Anda menjalankan echoperintah baru setiap kali, karenanya baris baru. Anda dapat memeriksanya secara tertulis echo "%nl%The%nl%new%nl%line%nl%is%nl%not%nl%apparent%nl%throughout%nl%text%nl%". Anda dapatkan "& echo. The& echo. new& echo. line& echo. is& echo. not& echo. apparent& echo. throughout& echo. text& echo. ", mengungkapkan triknya. Outputnya sama tetapi tidak untuk alasan yang Anda sarankan.
cdlvcdlv
2

cw.exeUtilitas DIY (konsol tulis)

Jika Anda tidak menemukannya di luar kotak, di luar rak, Anda dapat menggunakan DIY. Dengan cwutilitas ini Anda dapat menggunakan setiap jenis karakter. Setidaknya, saya ingin berpikir begitu. Silakan stress-test dan beri tahu saya.

Alat

Yang Anda butuhkan adalah .NET diinstal, yang sangat umum saat ini.

Material

Beberapa karakter diketik / disalin-tempel.

Langkah

  1. Buat .batfile dengan konten berikut.
/* >nul 2>&1

@echo off
setlocal

set exe=cw
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d  /o:-n "%SystemRoot%\Microsoft.NET\Framework\*csc.exe"') do set "csc=%%v"

"%csc%" -nologo -out:"%exe%.exe" "%~f0"

endlocal
exit /b %errorlevel%

*/

using System;

namespace cw {
    class Program {
        static void Main() {
            var exe = Environment.GetCommandLineArgs()[0];
            var rawCmd = Environment.CommandLine;
            var line = rawCmd.Remove(rawCmd.IndexOf(exe),exe.Length).TrimStart('"');
            line = line.Length < 2 ? "\r" : line.Substring(2) ;
            Console.Write(line);
        }
    }
}
  1. Menjalankannya.

  2. Sekarang Anda memiliki utilitas 4KB yang bagus sehingga Anda dapat menghapus .bat.

Atau, Anda dapat menyisipkan kode ini sebagai subroutine dalam batch, kirim yang dihasilkan .exeuntuk %temp%, menggunakannya dalam batch Anda dan menghapusnya saat Anda sudah selesai.

Cara Penggunaan

Jika Anda ingin menulis sesuatu tanpa baris baru:
cw Whatever you want, even with "", but remember to escape ^|, ^^, ^&, etc. unless double-quoted, like in "| ^ &".

Jika Anda ingin carriage return (pergi ke awal baris), jalankan saja
cw

Jadi coba ini dari baris perintah:

for /l %a in (1,1,1000) do @(cw ^|&cw&cw /&cw&cw -&cw&cw \&cw)
cdlvcdlv
sumber
Saya terinspirasi oleh jawaban Anda dan menciptakan ini alat kecil dengan Go dan ini tugas yang menyertainya untuk Azure Pipa. Itu hanya mengambil stdout yang disalurkan dan menghasilkan yang dalam format tertentu untuk diambil oleh build. Terima kasih!
riezebosch
2

Saya membuat fungsi dari ide @arnep:

echo | set / p = "Hello World"

ini dia:

:SL (sameline)
echo|set /p=%1
exit /b

Gunakan dengan call :SL "Hello There"
saya tahu ini tidak istimewa tapi butuh waktu lama untuk memikirkannya saya pikir saya akan mempostingnya di sini.

Mark Deven
sumber
1

Contoh 1: Ini berfungsi dan menghasilkan kode Keluar = 0. Itu Bagus. Perhatikan "." , langsung setelah gema.

C: \ Users \ phife.dog \ gitrepos \ 1 \ repo_abc \ scripts #
@echo. | set / p JUNK_VAR = Ini adalah pesan yang ditampilkan seperti Linux echo -n akan menampilkannya ... & echo% ERRORLEVEL%

Ini adalah pesan yang ditampilkan seperti Linux echo -n akan menampilkannya ... 0

Contoh 2: Ini berfungsi tetapi menghasilkan kode Keluar = 1. Itu buruk. Harap perhatikan kurangnya ".", Setelah gema. Tampaknya itulah perbedaannya.

C: \ Users \ phife.dog \ gitrepos \ 1 \ repo_abc \ scripts #
@echo | set / p JUNK_VAR = Ini adalah pesan yang ditampilkan seperti Linux echo -n akan menampilkannya ... & echo% ERRORLEVEL%

Ini adalah pesan yang ditampilkan seperti Linux echo -n akan menampilkannya ... 1

user3175529
sumber
1

Terinspirasi oleh jawaban untuk pertanyaan ini, saya membuat skrip counter batch sederhana yang terus mencetak nilai kemajuan (0-100%) pada baris yang sama (menimpa yang sebelumnya). Mungkin ini juga akan bermanfaat bagi orang lain yang mencari solusi serupa.

Catatan : Ini *adalah karakter yang tidak dapat dicetak, ini harus dimasukkan menggunakan kombinasi tombol [ Alt+ Numpad 0+ Numpad 8], yang merupakan backspacekarakter.

@ECHO OFF

FOR /L %%A in (0, 10, 100) DO (     
    ECHO|SET /P="****%%A%%"    
    CALL:Wait 1
)

GOTO:EOF

:Wait
SET /A "delay=%~1+1"
CALL PING 127.0.0.1 -n %delay% > NUL
GOTO:EOF
Spinicoffee
sumber
0

Saya percaya tidak ada pilihan seperti itu. Atau Anda dapat mencoba ini

set text=Hello
set text=%text% world
echo %text%
m0skit0
sumber
3
Ini masih akan mencetak baris baru.
René Nyffenegger
3
Anda dapat menggabungkan pada variabel yang sama sebanyak yang Anda inginkan dan hanya menggema di akhir.
m0skit0
2
Mencetaknya saat melakukan perulangan atau pada akhirnya tidak masalah jika data disimpan. Untuk setiap loop Anda baru saja menggabungkan data, dan kemudian ketika loop selesai Anda mencetaknya. Hasilnya sama.
m0skit0
9
Ini tidak peduli apakah itu indikator perkembangan loop.
gregseth
3
Anda tidak pernah menyatakan itu dalam pertanyaan Anda atau meminta perilaku ini di mana pun dalam pertanyaan Anda.
m0skit0
0

Anda dapat menekan baris baru dengan menggunakan perintah set / p. Perintah set / p tidak mengenali spasi, untuk itu Anda bisa menggunakan karakter titik dan backspace untuk membuatnya mengenalinya. Anda juga dapat menggunakan variabel sebagai memori dan menyimpan apa yang ingin Anda cetak di dalamnya, sehingga Anda dapat mencetak variabel alih-alih kalimat. Sebagai contoh:

@echo off
setlocal enabledelayedexpansion
for /f %%a in ('"prompt $H & for %%b in (1) do rem"') do (set "bs=%%a")
cls
set "var=Hello World! :)"
set "x=0"

:loop
set "display=!var:~%x%,1!"
<nul set /p "print=.%bs%%display%"
ping -n 1 localhost >nul
set /a "x=%x% + 1"
if "!var:~%x%,1!" == "" goto end
goto loop

:end
echo.
pause
exit

Dengan cara ini Anda dapat mencetak apa pun tanpa garis baru. Saya telah membuat program untuk mencetak karakter satu per satu, tetapi Anda dapat menggunakan kata-kata juga sebagai ganti karakter dengan mengubah loop.

Dalam contoh di atas saya menggunakan "enabledelayedexpansion" sehingga perintah set / p tidak mengenali "!" karakter dan mencetak titik, bukan itu. Saya harap Anda tidak menggunakan tanda seru "!" ;)

JVRaghava rama Sharma
sumber
-1

Terlambat menjawab di sini, tetapi bagi siapa pun yang perlu menulis karakter khusus ke satu baris yang menemukan jawaban dbenham terlalu panjang sekitar 80 baris dan yang skripnya mungkin rusak (mungkin karena input pengguna) di bawah batasan hanya menggunakan set /p, itu mungkin termudah untuk hanya untuk memasangkan Kelelawar atau Cmd dengan C ++ dikompilasi atau executable C-bahasa dan kemudian hanya coutatau printfkarakter. Ini juga akan memungkinkan Anda untuk dengan mudah menulis beberapa kali ke satu baris jika Anda menunjukkan semacam bilah kemajuan atau sesuatu yang menggunakan karakter, seperti yang tampak pada OP.

SeldomNeedy
sumber
@ jiggunjer Anda yakin? printfing dari cmdpanel Win-7 memberi saya"'printf' is not recognized as an internal or external command, operable program or batch file."
SeldomNeedy
printfbukan asli windows. Ini pertanyaan windows.
kayleeFrye_onDeck
1
@kayleeFrye_onDeck Saya menganggap komentar Anda diarahkan pada jiggunjer , bukan saya; Saya menyarankan dalam pertanyaan saya bahwa C dan C ++ dapat digunakan sebagai alternatif platform-independen untuk perintah shell dalam kasus di mana format penting.
SeldomNeedy
1
Maafkan aku, ayah, karena aku telah membaca sepintas lalu.
kayleeFrye_onDeck
Tetapi kemudian input ke shell harus diurai dengan benar. Misalnya, bagaimana program seperti itu akan mencetak tanda kutip?
Alex