Bir cmd.exe komutuna nasıl yeni bir satır ekleyebilirim?


23

cmd.exeAşağıdaki gibi komutun bir parçası olarak, bir satır sonu veya yeni bir çizgi ile bir komut yürütmeye çalışıyorum :

command -option:text  
whatever

Ancak her yeni satır, bir sonraki satırdaki komutu sürdürmek yerine komutu yürütür.

Peki, nasıl yeni bir satır karakteri girebilir veya cmd.exe'de çok satırlı bir komut oluşturabilirim?



Yanıtlar:


19

^Karakteri bir kaçış olarak kullanın :

command -option:text^

whatever

Windows XP veya benzerlerinden cmd.exe kullandığınızı varsayıyorum. Bu gerçek DOS değil. Gerçek DOS (MS-DOS, Win3.1, Win95, Win98, WinME) kullanıyorsanız, yeni satırlar için bir kaçış olduğuna inanmıyorum. Özel bir kabuk çalıştırmanız gerekir. cmd.exe size "Daha fazla?" ^satırın sonundaki a ile her basışınızda , yeni satırdan gerçekten kaçmak / gömmek için tekrar enter tuşuna basmanız yeterlidir.


Çok havalı, bunu bilmiyordum.
TJ Crowder

1
Önerdiğiniz şey, yeni bir satıra daha fazla metin girmeme izin veriyor. Yeni satırı korumaz. Ne istiyorum "metin" ve "ne olursa olsun" arasında bir satırsonu olmasıdır. Bunun gibi bir şey: "text \ nwhatever"
rudimenter

Bunu yapmak için iki yeni satır kullanmanız gerektiğine inanıyorum, orijinal yazımda bunu gerçekleştiremediğim için kötüyüm (şimdi düzenleniyor)
Darth Android

1
Metinde boşluk varsa, bunları tırnak içine almanız gerekeceğine dikkat edilmelidir. Ayrıca, son alıntıyı eklediğinizden emin olun, aksi takdirde şapka kaçış karakteri olarak göz ardı edilir ve metin gibi işlem görür. Son olarak, boşluk içeren her satırdaki metnin etrafına tırnak koymanız gerekir (güvenli olması için boşluk içermese bile bunu yapın) ve devam eden her satır için kapanış teklifinden sonra bir düzeltme işareti koymanız gerekir.
Synetech

1
Buraya bir SHUTDOWN.EXEkomutun yorumlarına satırsonu koymanın bir yolunu bulmaya çalıştım . Bunun gibi bir şey kullandım: shutdown -s -t 900 -c "foo bar"^ > Daha fazla? "baz"^ > Daha fazlası? "test that."İşe yaradı.
Synetech

4

Sayısal tuş takımıyla Alt kodları kullanma

C:\>ver

Microsoft Windows [Version 6.3.9600]

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

C:\>

Bu satır besleme karakteri , sayısal tuş takımı kullanılarak CLI'da Alt kodu olarak girilebilir : NumLock açıkken, ALT tuşunu basılı tutun ve ALT tuşunu bırakmadan önce sayısal tuş takımında 10 yazın. CR'ye de ihtiyacınız varsa, ikisini de Alt + 13 ve ardından Alt + 10 ile yazın:♪◙

Not: Bu bir toplu iş dosyasında çalışmaz.

Örnek kullanım durumda:

Orada ve hangi sırada hızlı bir genel bakış elde etmek için% PATH% veya% CLASSPATH% ortam değişkenlerini okumaya çalışıyorsunuz - ancak pathdönen metin duvarı okunamıyor. O zaman bu hızlı bir şekilde yazabileceğiniz bir şeydir:

echo %path:;=◙% >con

Düzenle:

>conBrent Rittenhouse'un, orijinal yöntemin çalışmayı durdurduğu cmd.exe'nin daha yeni sürümleri için keşfettiği geçici çözüm eklendi .


Bu benim için işe yaramıyor. Ben e2 99 aa e2 97 99geçti sonunda . Bir tür unicode kod noktası? Karakterlerin komut satırında olduğunu görüyorum. Herhangi bir öneri?
Brad

@Brad Windows 10'daki yeni cmd.exe'de artık çalışmıyor gibi görünüyor ve eski Windows 7 kutum bile artık bu şekilde davranmayacak.
Amit Naidu

Tuhaf! Acaba eski bir cmd.exe bir şey kazmak olabilir ....
Brad

@Brad, az önce denedim ve birkaç şey yaptım ve konsol özelliklerinde Rasida Yazı Tiplerine geçerseniz Lucida ve True Type yazı tipleri yerine Use legacy consoleonay kutusunu işaretlediğinizde bu eski davranışı alabileceğinizi fark ettim . Ancak yüksek çözünürlüklü bir monitörde gerçekten kötü görünüyor.
Amit Naidu

1
Aslında, bunun için HERHANGİ BİR yazı tipinde tamamen işe yarayan bir çözüm bulduğumu düşünüyorum! Alt-10 karakterli satırı tekrarlar ve ardından CON'a yönlendirirseniz çalışır! Örneğin: (echo New-line detected rigghhhtt ◙^<--- HERE!) > CONÇevreleyen parantez isteğe bağlıdır. İşte bununla ne yapabileceğinize dair daha sağlam bir örnek (VE şimdi çalışan ve tamamen bağımsız olarak çalışan taşıma iadeleri!): İ.imgur.com/qqN37PH.png
Brent Rittenhouse

1

Bunun sizin için işe yarayıp yaramayacağını bilmiyorum ama & echo koyarak (aşağıdaki boşluk önemlidir). yeni bir satırda istediğiniz her ifade arasında. Ben sadece basit bir yarasa dosyası ile denedim

echo %1

Sonra bunu testNewLines.bat olarak kaydetti

Sonra cmd çizgisi

testNewLines first line&echo Second Line&echo Third line

Aşağıdakilerin yankılanmasıyla sonuçlandı

birinci satır
ikinci satır
Üçüncü satır


1

Amit'in cevabına genişleyerek ( /superuser//a/1132659/955256 ) Eski konsolu KULLANMADAN bunu herhangi bir yazı tipinde yapmanın bir yolunu buldum.

Yapmanız gereken tek şey, alt-10 karakterli çizgiyi yankılamak ve daha sonra yönlendirmek conve işe yarayacak!

Örneğin, verilenler:

(echo Yeni satır tespit edilen rigghhhtt ◙ ^ <--- HERE!)> CON

edit: Eğlenceli gerçek, öyle görünüyor ki yönlendirme başlangıçta şöyle koyabilirsiniz:

> CON echo Yeni satır tespit rigghhhtt ◙ ^ <--- HERE!

Tuhaf, değil mi?

Bir çıktı alırsınız:


New-line detected rigghhhtt  
<-- HERE!

(Çevredeki parantez isteğe bağlıdır.)

İşte bu VE şaryo iadeleri ile neler yapabileceğinize dair daha sağlam bir örnek, şimdi ve tamamen bağımsız çalışan !:

Hepsinden iyisi, bir dosyaya da yönlendirirseniz çalışır!
(basitçe değiştirmek > CONiçin> desired_output_file.txt

Zevk almak!


1

^ 'ın çıktı kaydedilebilir

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

misal:

@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

; çıktı:

t1
t2
t3
Press any key to continue . . .

0

Bunu Windows cmd.exekabuğundan yapamayacağınıza inanıyorum . ( Öyle değil DOS. )


Bunun için tam bir "özel kabuk" gerekmez. Sadece böyle bir şey yazmanız gerekir (örnek Python'da ):

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

Veya Ruby:

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

Bak, o kadar zor değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.