ฉันจะเรียกใช้หลายคำสั่งในหนึ่งบรรทัดใน PowerShell ได้อย่างไร


268

ในคำสั่ง cmd คุณสามารถเรียกใช้สองคำสั่งในหนึ่งบรรทัดดังนี้:

ipconfig /release & ipconfig /renew

เมื่อฉันเรียกใช้คำสั่งนี้ใน PowerShell ฉันจะได้รับ:

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

PowerShell มีโอเปอเรเตอร์ที่ให้ฉันสร้างเทียบเท่า&ในพรอมต์ cmd อย่างรวดเร็วหรือไม่?

วิธีการรันสองคำสั่งในหนึ่งบรรทัดจะทำอย่างไร ฉันรู้ว่าฉันสามารถสร้างสคริปต์ แต่ฉันกำลังมองหาบางสิ่งบางอย่างออกมาจากข้อมืออีกเล็กน้อย


5
หมายเหตุสนุก: ระหว่างพอร์ตอนุกรมและการทำให้เป็นอนุกรมคำถามนี้แทบจะเป็นไปไม่ได้เลยที่จะค้นหา
David

เป็นคนโง่ ... มันง่ายมากที่จะค้นหา มันค่อนข้างยากที่จะได้รับชุดของการเข้าชมที่เกี่ยวข้อง :) (+1 สำหรับคำถามที่ยอดเยี่ยม)
Konrad Viltersten

คำตอบ:


384

ใช้เซมิโคลอนเพื่อโยงคำสั่งใน PowerShell:

ipconfig /release; ipconfig /renew

9
พวกเขาจะทำงานแบบขนานหรือเรียงตามลำดับหรือไม่
คุส

19
สิ่งนี้จะเรียกใช้ตามลำดับเช่นเดียวกับตัวดำเนินการ & ใน cmd.exe
Squeezy

43
แม้ว่าจะมีความแตกต่างใหญ่ - ";" รันคำสั่งที่สองแม้ว่าคำสั่งแรกจะล้มเหลว
Ivan

10
ดังกล่าวข้างต้นนี่เป็นลักษณะการทำงานของ & ใน cmd.exe
Squeezy

7
@Rafi ใช่ลอง {Command-One -ea Stop} Catch {Command-Two}
Dave_J

30

เครื่องหมายอัฒภาคจะเชื่อมโยงคำสั่งตามคำตอบก่อนหน้านี้ที่ระบุไว้แม้ว่าจะมีความแตกต่างที่สำคัญกับลักษณะการทำงานกับตัว&ดำเนินการในล่ามคำสั่งลักษณะ MS-DOS

ในตัวแปลคำสั่งการแทนค่าตัวแปรจะเกิดขึ้นเมื่ออ่านบรรทัด สิ่งนี้ทำให้เกิดความเป็นไปได้ที่เป็นระเบียบเช่นการสลับตัวแปรโดยไม่ต้องมีกาล:

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

จะส่งผลให้:

2
1

เท่าที่ฉันรู้ไม่มีวิธีที่จะทำซ้ำพฤติกรรมนี้ใน PowerShell บางคนอาจโต้แย้งว่าเป็นสิ่งที่ดี

ในความเป็นจริงมีวิธีการทำเช่นนี้ใน PowerShell:

$b, $a = $a, $b

มันจะส่งผลในการสลับบรรทัดเดียวของค่าตัวแปร


ดูเหมือนจะไม่ทำงานจากฟิลด์ "เป้าหมาย" ด้วย - คำสั่งตัวเลือกในทางลัดแม้ว่า
clearlight
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.