我正在尝试通过批处理文件下载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参数的外部引号的情况下将&符号包装在引号中?
答案 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中,您需要使用\"
或"
来代替):
`"