PowerShell'de bir satırda birden fazla komutu nasıl çalıştırabilirim?


268

Bir cmd komut isteminde, böyle bir satırda iki komutu çalıştırabilirsiniz:

ipconfig /release & ipconfig /renew

PowerShell'de bu komutu çalıştırdığımda şunu alıyorum:

Ampersand not allowed. The `&` operator is reserved for future use

PowerShell &bir cmd komut isteminde hızlıca eşdeğerini üretmeme izin veren bir operatöre sahip mi?

Herhangi bir satırda iki komutu çalıştırmanın herhangi bir yöntemi olacaktır. Bir senaryo yazabileceğimi biliyorum, ama kaftan biraz daha fazla bir şey arıyorum.


5
Eğlenceli Not: Seri portlar ve Serileştirme arasında, bu soruyu aramak neredeyse imkansızdır.
David,

İnek olmak ... Aramak çok kolay. İlgili bir dizi sonuç almak oldukça zor. :) (büyük soru için +1)
Konrad Viltersten

Yanıtlar:


384

PowerShell'deki komutları zincirlemek için noktalı virgül kullanın:

ipconfig /release; ipconfig /renew

9
Paralel mi yoksa sıralı mı koşacaklar?
Tarkus,

19
Bu, onları cmd.exe'deki & operatör gibi sırayla çalıştırır.
Squeezy

43
Yine de büyük bir fark var - ";" ilki başarısız olsa bile ikinci komutu çalıştırır.
Ivan

10
Yukarıda bahsedildiği gibi, bu aynı zamanda & in cmd.exe'nin davranışıdır.
Squeezy

7
@Rafi Evet, deneyin {Command-One -ea Stop} Yakala {Command-Two}
Dave_J

30

Bir noktalı virgül, komutları belirtilen önceki yanıtla ilişkilendirir , ancak &MS-DOS stili komut yorumlayıcısında işleçle davranışında önemli bir fark vardır .

Komut yorumlayıcısında değişken değiştirme, satır okunduğunda gerçekleşir. Bu, geçici olmadan değişkenleri değiştirme gibi bazı zarif olanaklara izin verir:

set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%

İle sonuçlanır:

2
1

Bildiğim kadarıyla, bu davranışı PowerShell'de çoğaltmanın yolu yok. Bazıları bunun iyi bir şey olduğunu iddia edebilir.

Aslında bunu PowerShell'de yapmanın bir yolu var:

$b, $a = $a, $b

Değişken değerlerin tek bir satır değiştirilmesine neden olur.


Kısayolda-komut seçeneği ile "Hedef" alanından çalışmak gibi görünmüyor
clearlight
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.