Jalankan beberapa perintah dengan 1 baris di baris perintah Windows?


65

Bagaimana saya bisa menjalankan banyak perintah di commandline Windows hanya dengan satu baris?

Jadi misalnya katakan saya ingin melakukan pembaruan SVN dan kemudian salin semua file ke lokasi lain ...

svn update; copy *.* c:\development\copy\

Jelas itu tidak berhasil. Apakah ada karakter atau pembatas seperti ';' untuk melakukan sesuatu seperti ini?

Jawaban:


105

Ya ada. Ini &.

&& akan menjalankan perintah 2 ketika perintah 1 selesai asalkan tidak gagal.

& akan mengeksekusi terlepas.


7
&dan &&hanya bekerja di Windows ' cmd.exe- yang bukan DOS.
grawity

22
'DOS' sebagai istilah sering digunakan untuk menggambarkan cmd, dan mengingat op menggunakan svn, saya sangat ragu dia masih menggunakan DOS. Tidak perlu bertele-tele :)
Phoshi

Di sana: urlencode.blogspot.com/2009/06/vista-desktop-june-09.html Dia menggunakan Windows XP. Tentunya bukan DOS (tidak pernah terlihat sebagus itu;))
Phoshi

8
Saya pikir aman untuk berasumsi bahwa ketika ada yang menyebut "DOS", artinya "Windows Command Prompt". Saya akan pergi mengambil risiko di sini dan mengatakan bahwa kebanyakan orang mungkin tidak menggunakan DOS banyak hari ini. Terima kasih atas koreksi - hanya sedikit tidak perlu di zaman sekarang ini.
Murdoch Ripper

@MurdochRipper Apa maksudmu? Saya melihat pertanyaan ini dalam DOS sekarang. ;)
Andrew

4

Setidaknya di MS-DOS 6.22 saya menggunakan kunci Ctrl+ Tuntuk mendapatkan semacam simbol paragraf. Ini bekerja seperti yang &disebutkan oleh Phoshi. Namun ini hanya akan berfungsi, jika Anda menjalankan doskey.exe.


4

Jika Anda ingin menjalankan beberapa perintah dengan 1 baris, di mana Anda memulai perintah dengan start, misalnya, jika Anda ingin menjalankan perintah seperti ini:

start "" netsh dump && pause

Kemudian, Anda perlu melakukannya dalam 2 langkah (solusi satu baris ada di akhir jawaban ini).

Pertama, tulis perintah ke file batch sementara (dalam hal ini, Anda dapat menggunakan &atau &&):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

Perhatikan bahwa Anda perlu "melarikan diri" masing-masing "&"s(ampersand) dengan tanda "^" agar mereka diperlakukan sebagai karakter biasa dalam echoperintah. Atau, Anda dapat membuat file batch sementara dengan editor teks, seperti Notepad.

Kemudian, gunakan startuntuk memulai file batch:

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"


Catatan: Pasangan kosong tanda kutip ganda untuk "Title"yang akan ditampilkan di judul-bar dari jendela perintah yang startakan terbuka. Ini "Title"argumen secara teknis opsional argumen untuk start, tetapi sebenarnya diperlukan , jika perintah yang startakan dijalankan adalah dikutip ganda. Misalnya, dalam contoh kedua:

start "" "temporary foobar.cmd"

jika Anda meninggalkan pasangan kosong tanda kutip kosong seperti ini:

start "temporary foobar.cmd"

kemudian startakan membuka jendela perintah baru, dan gunakan "temporary foobar.cmd"sebagai jendela perintah baru "Title", dan tidak ada yang akan dieksekusi di jendela perintah baru.)

Jika Anda ingin startmenunggu file batch selesai (setelah pausediberhentikan), sebelum startselesai, maka Anda perlu menambahkan /wsaklar ke startperintah:

start "" /w foobar.cmd

Anda dapat menggabungkan semua ini dalam satu baris dan bahkan menghapus (menghapus) file batch sementara ( foobar.cmd):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

Perhatikan bahwa jika Anda akan menghapus file batch sementara, Anda harus menjalankan startdengan /wswitch, jika tidak, file batch sementara mungkin akan dihapus sebelum memiliki kesempatan untuk dijalankan.


Alih-alih /worang bisa tidur sebentar sebelum menghapus file. timeout 2akan melakukannya, misalnya.
Antonio

@ kevin-fegan mengapa Anda memerlukan file cmd sementara ???
maxxyme

0

Jika Anda ingin membungkus perintah pertama dengan if tetapi tetap ingin perintah kedua dijalankan, maka Anda harus membungkus if dengan cmd / c juga seperti ini:

cmd / c jika ada abc. (rd / q abc) & echo halo

Jika Anda tidak mengawali if dengan cmd / c maka seluruh perintah menjadi bagian dari if (yang mungkin tidak Anda inginkan).


Atau Anda bisa mengatakan(if exist abc. command₁) & command₂
Scott

@Scott Saya tahu pujian adalah dosa di situs-situs ini, tetapi start "" cmd /c "(command₁) & (command₂)"sah tidak dijawab di mana pun di web tetapi merupakan satu-satunya cara untuk menautkan sebagian besar pernyataan bets. Selamat untukmu.
John Kens

1
Saya menghargai pujian / selamat, tetapi saya tidak mengerti apa yang Anda katakan. user138334 berkata, "Jika Anda ingin membungkus perintah pertama dengan perintah iftetapi masih ingin perintah kedua untuk dieksekusi tanpa maka Anda harus membungkus ifdengan cmd /cjuga", dan saya menjawab dengan cara melakukannya tanpa cmd /c. Jadi mengapa Anda mengatakan bahwa satu-satunya cara untuk menautkan sebagian besar pernyataan batch menggunakan cmd /c? Dan mengapa Anda melempar startke dalam campuran?
Scott

0

Ya gunakan &!

%command1% & %command2% menjalankan kedua perintah

%command1% && %command2% menjalankan perintah pertama, jika berhasil jalankan perintah kedua

%command1% || %command2% menjalankan perintah pertama, jika gagal jalankan perintah detik

Lihat di sini


Dan juga &,, &&dan ||sebenarnya bukan perintah, itu bagian dari batch. Bukan perintah.
KIRBY INHALES U

Dan %command%dapat mengeksekusi string itu sebagai perintah, terlihat di sini
KIRBY INHALES U

-1

Saya menemukan bahwa menggunakan 'MULAI' memperbaiki beberapa perintah (saya menjalankan Windows 10 Home). Sebagai contoh:

START chrome.exe "page.web.com" & timeout 20

Jawaban tidak boleh berisi komentar, seperti "Terima kasih untuk ini", itu mengalihkan perhatian dari solusi Anda. Anda harus mempertimbangkan untuk mengedit jawaban ini, jadi itu hanya menjawab pertanyaan, dengan sebanyak mungkin detail tetapi tanpa suara (yaitu perintah yang tidak berfungsi)
Ramhound

Apa yang dia cari, adalah &, bukan start!
NetwOrchestration

Masalah apa yang dipecahkan ini? Apa yang terjadi ketika Anda mengetikkan baris perintah tanpa start?
Scott

-2

buat file batch dengan nama pendek yaitu bat.bat .

add cmd /c %1 
    cmd /c %2 
rem

dan seterusnya ke 9 baris dan simpan

lalu gunakan dengan tanda kutip ganda

bat "command one" "command two" "command three" 

cmd /c akan menjalankan setiap perintah dan mematikan untuk baris berikutnya tidak mengatakan ini lebih baik dari && Hanya saja itu mudah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.