通过命令提示符转义powershell.exe中的引号

时间:2013-11-08 15:08:26

标签: powershell cmd

在查看this post之后我试图逃避引号,但做反斜杠并不会逃避这样的html引号:< - 注意它是一个正确的双引号而不是正常的{{1 }}

E.g:

正常工作:

"

不起作用:

powershell -noexit -command $str = \"hello '123' world\"; write-host $str

我怎么能逃避这个?或者更好的我如何一次性逃脱所有角色以摆脱这种麻烦!

4 个答案:

答案 0 :(得分:10)

使用反引号`来逃避特殊的双引号,所以:

powershell -noexit -command $str = \"hello '123'” world\"; write-host $str

成为这个:

powershell -noexit -command $str = \"hello '123'`” world\"; write-host $str

修改

选项1。如果您更喜欢使用here-strings,则可以将上述内容更改为powershell -file并运行您的powershell脚本文件。尽可能多地使用here-strings。

选项2。如果您不想在调用/处理应用程序/脚本中处理特殊引号字符,则可以切换到使用单引号。在这种情况下,你只需要通过将它们加倍来逃避单引号,如下所示:

powershell -noexit -command $str = 'hello ''123''” world'; write-host $str

请注意,我没有对你的双引号字符做任何事情,它的工作正常。

因此,您的字符串替换代码可能会更容易阅读和维护,特别是如果编辑器没有正确显示此字符(如Powershell控制台那样 - 它会显示常规的双引号)。

答案 1 :(得分:1)

  1. 使用“”
  2. 启动命令切换
  3. 通过在两边用4次引号包围文本来识别字符串:“”“”text“”“”

    示例:

    powershell.exe -command """""Recognized as string """""
    
    Output Stream:> Recognized as string
    
  4. 对于子表达式中的引号,引号加倍,即8次引号

    示例:

    powershell.exe -command """""""""How to quote in subexpression"""""""""
    
    Output Stream:> "How to quote in subexpression"
    

答案 2 :(得分:0)

从命令提示符运行(实际上在PowerShell中):

powershell -noexit -command { $str = "hello '123' world"; write-host $str }

产生

hello '123' world

这可以满足您的需求吗?

答案 3 :(得分:0)

我也遇到过同样的问题,发现使用Powershell 6.x(Core)可以做到这一点:

pwsh -command write-host "`u{22}quoted`u{22}" 

输出:

"quoted"