作者:女女的家_747 | 2023-08-30 14:35
&&
众所周知难以在谷歌搜索,但我发现的最好的是这篇文章说要使用-and
.
不幸的是它没有提供任何更多的信息,我无法找到我应该做的事情-and
(再次,一个众所周知的难以搜索)
我正在尝试使用它的上下文是"执行cmd1,如果成功,执行cmd2",基本上这样:
csc /t:exe /out:a.exe SomeFile.cs && a.exe
这应该是一个容易的几个代表谁知道,谢谢!
编辑:如果你只想在一行上运行多个命令,而你不在乎第一个是否失败,你可以使用;
我的大多数用途这是好的
例如:kill -n myapp; ./myapp.exe
.
1> Jay Bazuzi..:
在CMD中,'&&'表示"执行命令1,如果成功,则执行命令2".我把它用于以下事情:
build && run_tests
在PowerShell中,您可以做的最接近的事情是:
(build) -and (run_tests)
它具有相同的逻辑,但命令的输出文本丢失.不过,也许这对你来说已经足够了.
编辑
如果您在脚本中执行此操作,则最好将分隔语句分开,如下所示:
build
if ($?) {
run_tests
}
我不认为PowerShell是"删除了愚蠢部分的CMD".我喜欢把它想象成"没有任何有用位的Bash".
学习PowerShell时遇到真正挫败感的最快方法就是首先考虑它只是一个扩展的CMD或bash.它有一个根本不同的型号,*特别是*在输入,输出,管道和结果方面.从一个好的教程或概述开始,不要太努力使其他shell的语法工作.你必须按照自己的条件来接受它.
你也可以做`build; if($?){run_tests}`在命令行上也是如此.
RE:"他们会删除"的荒谬" - 我不喜欢将PowerShell视为"删除了愚蠢部分的CMD".http://is.gd/k92B
2> Jeffrey Snov..:
&&和|| 在要实现的事情列表中(仍然是)但没有弹出作为下一个最有用的东西添加.原因是我们有-AND和-OR.如果您认为这很重要,请在Connect上提出建议,我们会将其视为V3.
你知道,问题仍然是如何写一个等价的,如果你添加一个*using*`-AND`的例子,你的答案会更有用.
我注册了Connect,并提名自己为powershell,但我无法弄清楚如何提出建议.Connect网站真的很复杂且令人困惑:-(
我找不到预先存在的请求,所以我做了一个:https://connect.microsoft.com/PowerShell/feedback/details/778798/implement-the-and-operators-that-bash-has
我希望杰弗里·斯诺弗正在倾听,这应该是现在实施它的足够理由.它已经太长了,现在PowerShell开始在地方弹出,比如VSCode将它用作Windows中的默认终端.这是没有&&的完全痛苦,` - 和'吃输出,根本不相同.
这很重要,因为它是一个基本的流量控制工具,用于比Windows更早的系统,几乎是永恒的.因此,提出了另一个突破linux和windows之间的区别.
3> Ivan..:
试试这个:
$errorActionPreference='Stop'; csc /t:exe /out:a.exe SomeFile.cs; a.exe
注意:如果第一个命令失败,第二个命令仍然会运行.
首选变量`$ ErrorActionPreference`仅控制_cmdlets_报告的非终止错误的处理方式; `csc`和`a.exe`之类的外部实用程序从不报告这样的错误(它们只反映它们在`$?`(成功标志)和`$ LASTEXITCODE`(报告的特定退出代码)中的退出状态),所以你的命令行相当于_both_命令的_unconditional_执行(相当于`cmd`的`csc/t:exe /out:a.exe SomeFile.cs&a.exe`)
4> Tomoyuki Aot..:
如果您的命令在cmd.exe中可用(类似python ./script.py
PowerShell命令,但不是ii .
(例如,这意味着通过资源管理器打开当前目录)),则可以在PowerShell中运行cmd.exe。语法如下:
cmd /c "command1 && command2"
在此,由此问题中&&
描述的cmd语法提供。