特殊字符不保存

问题描述 投票:0回答:1

我需要创建一个脚本来自动化一些过程 但我有一个问题 当我在 .ps1 中使用命令时

New-Item -Path $env:userprofile\Desktop\Cloack -Name "test.json" -ItemType "file" -Value "{ \`"a\`":b, \`n \`"b\`":c, etc .}"

然后所有内容都按预期写入变量

{ "a": b,
 "b":c, etc .}

但是文件 .bat 可以做到:

powershell New-Item -Path $env:userprofile\Desktop\Cloack -Name "test.json" -ItemType "file" -Value "{ `"a`":b, `n `"b`":c, etc .}"

我得到的结果是

`a`: b, 
`b`:c
etc .

我希望在执行 "

 文件时正确输入 
字符
{
.bat

就像剧本里那样

powershell batch-file escaping
1个回答
0
投票

根据您的预期输出(从 PowerShell 内部执行时与 PowerShell 命令不匹配)判断,您正在寻找类似以下内容:

:: From a batch file
powershell -c "New-Item -Path $env:userprofile\Desktop\Cloack -Name test.json -Value \"{ `\"a`\":b, `n `\"b`\":c, etc .}\""
  • -c
    (
    -Command
    ) 是默认目标的 PowerShell CLI 参数,但为了概念清晰而包含在此处。

  • 整个命令包含在

    "..."
    中,为了稳健性,防止
    cmd.exe

    对部分命令进行潜在不需要的预先解释
  • 无论您总体上是否使用

    "..."
    ,作为要执行的命令的一部分,应该通过
    传递到 PowerShell 的 
    " 字符必须是 转义,如 \"
    ; PowerShell CLI 假定 
    未转义 "
     具有语法功能 
    仅在命令行上,因此删除它们。

  • 因此,上面

    \"{ `\"a`\":b, `n `\"b`\":c, etc .}\"

    内的
    "..."
    部分最终被看到并评估如下,我认为这就是你想要的:

    "{ `"a`":b, `n `"b`":c, etc .}"
    
    
© www.soinside.com 2019 - 2024. All rights reserved.