如何在批处理文件的powershell命令中包含“&”符号?

时间:2019-02-28 01:40:07

标签: powershell batch-file google-sheets quoting

我正在尝试通过批处理文件下载Google表格。这有效:

powershell -Command "Invoke-WebRequest https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv -OutFile output.tsv"

当我通过添加&gid = 1234指定所需的工作表/标签时,会中断:

powershell -Command "Invoke-WebRequest https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234 -OutFile output.tsv"

错误是:

  

不允许使用&字符。 &运算符保留   供将来使用;将与号用双引号(“&”)括起来   将其作为字符串的一部分传递。

如何在不破坏Command参数的外部引号的情况下将&符号包装在引号中?

1 个答案:

答案 0 :(得分:3)

传递给"..."的{​​{1}}字符串中嵌入的URL也必须加上引号,因为不带引号的 {{1} }对PowerShell也具有特殊的意义(尽管在Windows PowerShell中,当前它仅保留供将来使用;在PowerShell Core 中,可以在位置后使用它作为后台作业来运行命令) )。

最简单的选择是使用Olaf所建议的嵌入powershell -Command引号,因为&字符。不需要在'...'内转义。 PowerShell中的'字符串是 literal 字符串,在这种情况下,考虑到URL不包含变量引用,就可以了。

"..."

如果需要对字符串内插使用嵌入式'...'引号,请使用powershell -Command "Invoke-WebRequest 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234' -OutFile output.tsv" (原文如此)转义嵌入式("...")字符。 (请注意,在内部 PowerShell中,您需要使用\""来代替):

`"