Windows: Bagaimana cara menentukan perintah multiline pada command prompt?

170

bagaimana cara memperluas perintah ke baris berikutnya?

pada dasarnya apa alternatif windows untuk linux

ls -l \
/usr/

di sini kita menggunakan backslash untuk memperluas perintah pada baris berikutnya

apa yang setara dengan windows?

Jigar
sumber
+1 untuk T&J singkat dan ringkas, eksplorasi yang lebih luas dari penanganan tanda sisipan di stackoverflow.com/questions/69068/…
matt wilkie

Jawaban:

296

Setelah mencoba hampir setiap tombol di keyboard saya:

C:\Users\Tim>cd ^
Mehr? Desktop

C:\Users\Tim\Desktop>

Jadi sepertinya itu adalah kunci ^.

Timbo
sumber
13
Microsoft tidak dapat mematuhi standarnya sendiri sehingga ini tidak berfungsi di PowerShell. PowerShell Equivalent to ^ adalah `So C: \ Users \ Tim> cd` >> Desktop Memberi Anda ke Desktop Tim \ 0 /
Ric Jafe
3
@RicJafe Kenapa harus begitu? PowerShell benar-benar terpisah! Kunci yang setara untuk PS adalah `.
WhatIsHeDoing
Adakah ide tentang PowerShell?
Ryan
3
@RyanSeanWattrus Menggunakan metode yang sangat ilmiah yang sama: `(l'accent grave)
Timbo
57

Di Prompt Perintah Windows ^digunakan untuk melarikan diri karakter berikutnya pada baris perintah. (Suka \digunakan dalam string.) Karakter yang perlu digunakan dalam baris perintah karena mereka harus memiliki ^ awalan kepada mereka, maka itu sebabnya ia bekerja untuk baris baru.

Untuk referensi karakter yang perlu melarikan diri (jika ditentukan sebagai argumen perintah dan bukan dalam tanda kutip) adalah: &|()

Jadi setara dengan contoh linux Anda akan menjadi ( More? Menjadi prompt):

C:\> dir ^
More? C:\Windows
Daemin
sumber
15
Karakter '^' harus menjadi karakter terakhir dalam barisan. Kalau tidak, jika Anda memiliki SPACE di akhir, perintah multiline tidak berfungsi.
Dmytro Ovdiienko
6

Karakter caret berfungsi, namun baris selanjutnya tidak boleh dimulai dengan tanda kutip ganda. mis. ini tidak akan berfungsi:

C:\ ^
"SampleText" ..

Mulai baris berikutnya tanpa tanda kutip ganda (bukan contoh yang valid, hanya untuk menggambarkan)

Ali
sumber
1

Jika Anda datang ke sini mencari jawaban untuk pertanyaan ini tetapi tidak persis seperti yang dimaksudkan OP, yaitu bagaimana Anda mendapatkan multi-line CMD untuk bekerja dalam satu baris, saya punya semacam jawaban berbahaya untuk Anda.

Mencoba menggunakan ini dengan hal-hal yang benar-benar menggunakan perpipaan, seperti katakanlah findstrcukup bermasalah. Hal yang sama berlaku untuk berurusan dengan elses. Tetapi jika Anda hanya ingin perintah kondisional multi-baris untuk mengeksekusi langsung dari CMD dan tidak melalui file batch, ini harus bekerja dengan baik.

Katakanlah Anda memiliki sesuatu seperti ini dalam kumpulan yang ingin Anda jalankan langsung di command prompt:

@echo off
for /r %%T IN (*.*) DO (
    if /i "%%~xT"==".sln" (
        echo "%%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file
        echo Dumping SLN file contents
        type "%%~T"
    )
)

Sekarang, Anda bisa menggunakan baris-kelanjutan carat ( ^) dan mengetiknya secara manual seperti ini, tetapi peringatan, itu membosankan dan jika Anda mengacaukan Anda dapat mempelajari kegembiraan mengetik semuanya lagi.

Yah, itu tidak akan bekerja dengan hanya ^berkat mekanisme melarikan diri di dalam kurung mengangkat bahu. Setidaknya tidak seperti yang tertulis. Anda sebenarnya perlu menggandakan karat seperti:

@echo off ^
More? for /r %T IN (*.sln) DO (^^
More? if /i "%~xT"==".sln" (^^
More? echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file^^
More? echo Dumping SLN file contents^^
More? type "%~T"))

Sebagai gantinya, Anda bisa menjadi skrip licik kotor dari sisi trek yang salah yang tidak memerlukan karat dengan menukarnya untuk satu pipa ( |) per kelanjutan dari satu loop / ekspresi:

@echo off
for /r %T IN (*.sln) DO if /i "%~xT"==".sln" echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file | echo Dumping SLN file contents | type "%~T"
kayleeFrye_onDeck
sumber