我可以得到&&在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 {}