Toplu iş dosyasında komut zincirlemesi için Multiline ve& birleştirici operatörü


1

anlıyorum bu işleci, pencerelerde (ve Linux olabilir?) tek bir satırda birden çok komutu zincirlemek / birleştirmek için kullanılır. Komutlar, başarılı bir şekilde tamamlanmadığı sürece, birbiri ardına çalıştırılır (çıkış kodu 0).

Ancak toplu iş dosyasında kullanılıp kullanılamayacağını anlamıyorum, burada komutları arka arkaya, her satırda bir komut. Bu durumda aynı etkiyi nasıl elde edersiniz? Nasıl ayrılırsın cmd1 && cmd2 && cmd3 birden fazla satıra ? Nasıl sonlandırıyorsun

cmd1
cmd2
cmd3

ilk komut başarısız olur olmaz?

Daha sonra kendim gibi sorulara cevap bulmak için operatörün adını da bilmek istiyorum.

Yanıtlar:


1
cmd1 && cmd2 && cmd3

çoklu satırlara yazılabilir.

cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3

Her komutun yürütülmesi öncekinin sonucuna bağlı olacaktır.


1

GNU / Linux'ta komutu bölebilirim cmd1 && cmd2 && cmd3 Bunun gibi bir komut dosyasında (örneğin okunabilirlik için) birden fazla satırın içine:

cmd1 &&
cmd2 &&
cmd3

0

Aralarındaki fark:

cmd1
cmd2
cmd3

Her komutu ayrı ayrı çalıştıracak ve vurursanız toplu işin sonlandırılmasına olanak tanıyacaktır. Ctrl + c biri bitmeden önce.

Buna karşılık

cmd1 && cmd2 && cmd3

komutları birbiri ardına başlatacak, ancak komut dosyasına bakmadan tek seferde başlatacak.

Daha fazla örnek için

İlk örneğe bakınız, eğer cmd1 çalışırken komut dosyasını düzenlerseniz ve cmd2'yi cmd3'e değiştirirseniz, cmd1 bittiğinde cmd3'ü yükler.

Linux'ta yaparsam ifdown eth0 Ssh oturumumu kaybedeceğim, öyleyse yaparım ifdown eth0 && ifup eth0 komutları zincirlemek için.

Başarısızlık ile ilgili bir şey yapmak istiyorsanız, ifadelere ve dönüş kodlarına ve hata seviyelerine göre değişip değişmediğine bakmalısınız. Linky .


0

& Amp; & amp; iş?

Ancak toplu iş dosyasında kullanılıp kullanılamayacağını anlamadım, burada birbiri ardına komutları, satır başına bir komut

Bu cevabın geri kalanı Windows toplu iş dosyaları içindir.


Nasıl ayrılırsın cmd1 && cmd2 && cmd3 Birden fazla satıra mı?

Komutlar kullanılarak bölünebilir if ve %errorlevel%

Setlocal EnableDelayedExpansion
cmd1
if !ERRORLEVEL! equ 0 (
  cmd2
  if !ERRORLEVEL! equ 0 (
    cmd3
    )
  )

Operatörün adını da bilmek isterim &&

&& operatör iki kişiden biri Koşullu Operatörler . Diğer ||.

commandA && commandB Koşmak commandA, başarılı olursa, çalıştır commandB

commandA || commandB Koşmak commandA, başarısız olursa o zaman çalıştırın commandB

Kaynak Yönlendirme


Daha fazla okuma


Gecikmeli genişleme kullanmazsanız, iç testler başarısız olur
dbenham

İyi yakalama. Cevap güncellendi.
DavidPostill
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.