Bagaimana saya bisa menyisipkan baris baru dalam perintah cmd.exe?

23

Saya mencoba menjalankan perintah pada cmd.exe, dengan satu baris atau baris baru sebagai bagian dari perintah, seperti di bawah ini:

command -option:text  
whatever

Tetapi setiap baris baru menjalankan perintah, alih-alih melanjutkan perintah di baris berikutnya.

Jadi, bagaimana saya bisa memasukkan karakter baris baru, atau membuat perintah multi-baris di cmd.exe?

rudimenter
sumber

Jawaban:

19

Gunakan ^karakter sebagai pelarian:

command -option:text^

whatever

Saya berasumsi Anda menggunakan cmd.exe dari Windows XP atau serupa. Ini bukan DOS yang sebenarnya. Jika Anda menggunakan DOS aktual (MS-DOS, Win3.1, Win95, Win98, WinME), maka saya tidak percaya ada jalan keluar untuk baris baru. Anda perlu menjalankan shell khusus. cmd.exe akan meminta Anda untuk "Lebih banyak?" setiap kali Anda menekan enter dengan ^di akhir baris, cukup tekan enter lagi untuk benar-benar keluar / menyematkan baris baru.

Darth Android
sumber
Terlalu keren, saya tidak tahu itu.
TJ Crowder
1
Ini yang Anda sarankan adalah memungkinkan saya memasukkan lebih banyak teks pada baris baru. Itu tidak mempertahankan baris baru. Yang saya inginkan adalah bahwa antara "teks" dan "apa pun" adalah baris baru. Sesuatu seperti ini: "teks \ n apa pun"
rudimenter
Saya percaya Anda harus menggunakan dua baris baru untuk melakukan itu, kesalahan saya karena tidak menyadarinya di pos asli saya (sekarang diedit)
Darth Android
1
Perlu dicatat bahwa jika Anda memiliki spasi di teks, Anda harus membungkusnya dengan tanda kutip. Selanjutnya, pastikan bahwa Anda memasukkan kutipan akhir, jika tidak tanda sisipan akan diabaikan sebagai karakter pelarian dan diperlakukan seperti teks. Terakhir, Anda perlu memberi tanda kutip di sekitar teks pada setiap baris yang berisi spasi (melakukannya meskipun itu tidak mengandung spasi agar aman), dan beri tanda kurung setelah kutipan penutup untuk setiap baris yang berlanjut.
Synetech
1
Saya berakhir di sini dengan mencoba menemukan cara untuk meletakkan baris baru di komentar dari sebuah SHUTDOWN.EXEperintah. Saya akhirnya menggunakan sesuatu seperti ini: shutdown -s -t 900 -c "foo bar"^ > Lebih banyak? "baz"^ > Lebih banyak? "test that."Itu berhasil.
Synetech
4

Gunakan kode Alt dengan numpad

C:\>ver

Microsoft Windows [Version 6.3.9600]

C:\>echo Line1◙Line2 >con
Line1
Line2

C:\>

Karakter umpan garis itu dapat dimasukkan sebagai kode Alt pada CLI menggunakan numpad: dengan NumLock aktif, tahan ALT dan ketik 10 pada numpad sebelum melepaskan ALT. Jika Anda membutuhkan CR juga, ketik keduanya dengan Alt + 13 dan kemudian Alt + 10:♪◙

Catatan: ini tidak akan berfungsi dalam file batch.

Contoh kasus penggunaan:

Anda mencoba membaca variabel lingkungan% PATH% atau% CLASSPATH% untuk mendapatkan gambaran umum singkat tentang apa yang ada dan dalam urutan apa - tetapi dinding teks yang pathmengembalikan tidak dapat dibaca. Maka ini adalah sesuatu yang Anda dapat dengan cepat mengetik:

echo %path:;=◙% >con

Edit:

Menambahkan >consolusi yang ditemukan Brent Rittenhouse untuk versi cmd.exe yang lebih baru, di mana metode asli telah berhenti bekerja.

Amit Naidu
sumber
Ini sepertinya tidak berhasil untuk saya. Saya berakhir dengan e2 99 aa e2 97 99lulus. Semacam titik kode unicode? Saya melihat karakter masuk pada baris perintah sekalipun. Ada saran?
Brad
@Brad Saya dapat mengonfirmasi sepertinya tidak berfungsi lagi di cmd.exe baru di Windows 10 dan bahkan kotak Windows 7 lama saya tidak akan berlaku seperti ini lagi.
Amit Naidu
Aneh! Saya ingin tahu apakah saya dapat menggali cmd.exe lama dari sesuatu ....
Brad
@Brad, saya baru saja mencoba dan beberapa hal dan menyadari bahwa Anda bisa mendapatkan perilaku lama itu jika Anda beralih ke Raster Font di properti konsol, alih-alih font Lucida dan True Type dan centang Use legacy consolekotak centang. Tetapi terlihat sangat buruk pada monitor beresolusi tinggi.
Amit Naidu
1
Sebenarnya, saya pikir saya telah menemukan solusi yang bekerja untuk ini sepenuhnya dalam font APAPUN! Jika Anda hanya menggemakan baris dengan karakter alt-10 dan mengarahkannya ke CON, itu akan berfungsi! Sebagai contoh: (echo New-line detected rigghhhtt ◙^<--- HERE!) > CONTanda kurung di sekitarnya adalah opsional. Berikut ini adalah contoh yang lebih kuat tentang apa yang dapat Anda lakukan dengan ini (DAN pengembalian carriage yang sekarang berfungsi, dan sepenuhnya independen!): I.imgur.com/qqN37PH.png
Brent Rittenhouse
1

Saya tidak tahu apakah ini akan berhasil untuk Anda tetapi dengan menempatkan & echo (ruang berikut ini penting). di antara setiap pernyataan yang Anda inginkan di baris baru. Saya hanya mencoba ini dengan file bat sederhana

echo %1

Kemudian disimpan itu sebagai testNewLines.bat

Jadi garis cmd

testNewLines first line&echo Second Line&echo Third line

Menghasilkan yang berikut ini digaungkan kembali

baris pertama baris
kedua Baris
ketiga

Haydar
sumber
1

Memperluas jawaban Amit ( /superuser//a/1132659/955256 ) Saya menemukan cara untuk melakukannya dalam font apa saja TANPA menggunakan konsol lawas.

Yang perlu Anda lakukan hanyalah menggemakan baris dengan karakter alt-10 dan kemudian mengarahkannya kembali condan itu akan berhasil!

Misalnya, diberikan:

(Gema Rig baris baru terdeteksi ◙ ^ <--- DI SINI!)> CON

sunting: Fakta menyenangkan, tampaknya Anda dapat menempatkan pengalihan di awal seperti:

> CON echo Baris baru terdeteksi rigghhhtt ◙ ^ <--- DI SINI!

Aneh, kan?

Anda akan mendapatkan output dari:


New-line detected rigghhhtt  
<-- HERE!

(Tanda kurung di sekitarnya adalah opsional.)

Berikut adalah contoh yang lebih kuat tentang apa yang dapat Anda lakukan dengan pengembalian carriage AND ini yang sekarang berfungsi, dan sepenuhnya independen !:

Terbaik dari semua, ini berfungsi jika Anda mengarahkan ulang ke file juga!
(cukup ganti > CONke> desired_output_file.txt

Nikmati!

Brent Rittenhouse
sumber
1

Output ^ dapat disimpan

set br= ^
<</br (newline)>>
<</br>>

contoh:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"


rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^



set "t=t1!br!t2!br!t3"

for /f "tokens=* delims=" %%q in ("!t!") do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

; keluaran:

t1
t2
t3
Press any key to continue . . .
ilias
sumber
0

Saya percaya Anda tidak dapat melakukan itu dari cmd.exeshell Windows . ( Ini bukan DOS. )


Anda tidak perlu "shell khusus" penuh untuk itu. Anda hanya perlu menulis sesuatu seperti ini (contohnya dengan Python ):

import subprocess
subprocess.call(["C:\\bin\\sometool.exe", "test\nwith\nnewlines"])

Atau Ruby:

Kernel::exec "C:\\bin\\sometool.exe", "test\nwith\nnewlines"

Lihat, itu tidak sulit.

pengguna1686
sumber