在CMD中与管道(“|”)一起使用时,短划线(“ - ”)是什么?

时间:2011-12-19 23:29:39

标签: powershell batch-file cmd

我想创建一些可点击的PowerShell脚本,我发现我稍微修改了this answer

;@Findstr -bv ;@F %0 | powershell -noprofile -command - & goto:eof

# PowerShell Code goes here.

我理解Findstr将所有不以;@F开头的行传递到管道的右侧,短划线指定输入应该去的位置,但是什么调用破折号字符以及记录在哪里?

我在微软的Using command redirection operators上找到了CMD管道操作员的解释,但它没有提到有关短划线字符的任何内容。

3 个答案:

答案 0 :(得分:1)

我认为你的意思是-之前的&。它与管道操作符无关,它是powershell的指令。

以下是从powershell帮助摘录的-Command选项的说明(由powershell /?访问)

-Command
    Executes the specified commands (and any parameters) as though they were
    typed at the Windows PowerShell command prompt, and then exits, unless
    NoExit is specified. The value of Command can be "-", a string. or a
    script block.

    If the value of Command is "-", the command text is read from standard
    input.
BTW - 在我看到你的问题之前,我没有意识到FINDSTR接受-作为选项指标。我只看过并使用过/。知道的好消息。

答案 1 :(得分:0)

-对Powershell来说是接受来自stdin而不是来自参数的命令。这不是cmd / batch和piping中的功能。它也适用于<

答案 2 :(得分:-1)

Powershell版本2添加了“Run with Powershell”右键单击上下文菜单项以运行脚本。 Here您将找到一些增强的shell扩展,以使用提升的权限运行Powershell脚本。但是,如果您只想通过双击文件来运行Powershell脚本,我建议您只从批处理脚本调用Powershell脚本,而不是尝试在批处理脚本中嵌入Powershell代码。在批处理脚本中使用:powershell.exe -file "%~dp0MyScript.ps1"其中%~dp0扩展到当前目录。这实际上为您的Powershell脚本创建了一个引导程序,您可以双击它来启动Powershell脚本。