我需要创建一个脚本来自动化一些过程 但我有一个问题 当我在 .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 内部执行时与 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 .}"
关于powershell - 特殊字符不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77135461/