如何在PowerShell中的一行上运行多个命令?


268

在cmd提示符下,您可以在一行上运行两个命令,如下所示:

ipconfig /release & ipconfig /renew

在PowerShell中运行此命令时,我得到:

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

是否有PowerShell的运营商,让我能够迅速产生相当于&在命令提示符?

在一行中运行两个命令的任何方法都可以。我知道我可以编写脚本,但是我正在寻找一些方便的东西。


5
有趣的注意:在串行端口和序列化之间,实际上不可能搜索到此问题。
David

变得书呆子...搜索它非常容易。获得相关的点击集非常困难。:)(+ 1是一个很好的问题)
Konrad Viltersten 2014年

Answers:


384

使用分号在PowerShell中链接命令:

ipconfig /release; ipconfig /renew

9
它们将并行运行还是顺序运行?
Tarkus 2014年

19
这将按顺序运行它们,就像cmd.exe中的&运算符一样。
Squeezy 2014年

43
虽然有很大的不同-“;” 即使第一个失败,也会运行第二个命令。
伊万2014年

10
如上所述,这也是cmd.exe中&的行为。
Squeezy

7
@Rafi是的,尝试{Command-One -ea Stop}赶上{Command-Tw​​o}
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

这将导致单行交换变量值。


似乎在快捷方式中使用-command选项无法在“目标”字段中工作
clearlight '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.