我可以得到&&在Powershell中工作吗?

在google上search&&是非常困难的,但是我发现的最好的是这篇文章 ,它说使用-and

不幸的是,它没有提供任何更多的信息,我也找不到我应该做什么-and (再次,一个非常难以search的东西)

我试图使用它的上下文是“执行cmd1,如果成功,执行cmd2”,基本上是这样的:

 csc /t:exe /out:a.exe SomeFile.cs && a.exe 

这应该是一个简单的几个代表知道的人,谢谢!


编辑:如果你只是想在一行上运行多个命令而不关心第一个命令是否失败,你可以使用; 对于我的大部分目的来说,这很好

例如: kill -n myapp; ./myapp.exe kill -n myapp; ./myapp.exe

在CMD中,'&&'表示“执行命令1,如果成功执行命令2”。 我用它来做这样的事情:

 build && run_tests 

在PowerShell中,您可以做的最接近的事情是:

 (build) -and (run_tests) 

它具有相同的逻辑,但命令的输出文本丢失。 不过,也许这对你来说已经足够了。

编辑

如果你正在用脚本来做这件事,你可能会更好地分离这些陈述,如下所示:

 build if ($?) { run_tests } 

&&和|| 是在实现的东西(仍然),但没有popup作为下一个最有用的东西要添加的列表。 原因是我们有-AND和-OR。 如果您认为这很重要,请提交关于Connect的build议,我们会考虑使用V3。

尝试这个:

 $errorActionPreference='Stop'; csc /t:exe /out:a.exe SomeFile.cs; a.exe 

我在PowerShell中尝试了这一系列命令:

Fisrttesting

 PS C:\> $MyVar = "C:\MyTxt.txt" PS C:\> ($MyVar -ne $null) -and (Get-Content $MyVar) True 

($MyVar -ne $null)返回true,并且(Get-Content $MyVar)也返回true

第二次testing

 PS C:\> $MyVar = $null PS C:\> ($MyVar -ne $null) -and (Get-Content $MyVar) False 

($MyVar -ne $null)返回false ,所以我必须假设(Get-Content $MyVar)也返回false

第三个testingcertificate第二个条件甚至没有被分析。

 PS C:\> ($MyVar -ne $null) -and (Get-Content "C:\MyTxt.txt") False 

($MyVar -ne $null)返回false ,certificate第二个条件(Get-Content "C:\MyTxt.txt")永远不会运行,在整个命令上返回false

我认为一个简单的if语句可以做到这一点。 一旦我看到mkelement0的响应高于最后一个退出状态存储在$ ?,我把以下一起:

 # Set 1st command to variable $a=somecommand # Temp var to store exit status of last command (since we can't write to $?) $test=$? # Run Test if ($test=$true) { 2nd-command } 

所以对于op的例子来说,这将是:

 a=(csc /t:exe /out:a.exe SomeFile.cs); $test = $?; if ($test=$true) { a.exe } 

这取决于上下文,但这里有一个“ – 和”的例子:

 get-childitem | where-object { $_.Name.StartsWith("f") -and $_.Length -gt 10kb } 

所以在文件名以“f”开头的目录下,所有文件都大于10kb。

 if (start-process filename1.exe) {} else {start-process filename2.exe} 

它比“&&”稍长一些,但是没有脚本就能完成同样的事情,而且不会太难记。 迟到总比不到好。 🙂

我们可以试试这个命令,而不是使用&&方法

尝试{主机名; 如果($ lastexitcode -eq 0){ipconfig / all | findstr / i bios}} catch {echo err} finally {}