如何在批处理文件的 powershell 命令中包含 & 符号?
How do I include ampersands in a powershell command in a batch file?
我正在尝试通过批处理文件下载 Google sheet。这有效:
powershell -Command "Invoke-WebRequest https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv -OutFile output.tsv"
当我通过添加 &gid=1234 指定我想要的 sheet/tab 时,这中断了:
powershell -Command "Invoke-WebRequest https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234 -OutFile output.tsv"
错误是:
The ampersand (&) character is not allowed. The & operator is reserved
for future use; wrap an ampersand in double quotation marks ("&") to
pass it as part of a string.
如何在不破坏 Command 参数的外部引号的情况下将 & 符号括在引号中?
传递给powershell -Command
的"..."
字符串中嵌入的URL也必须被引用,因为一个unquoted &
对 PowerShell 也有特殊意义(尽管在 Windows PowerShell 中它目前仅保留供将来使用;在 PowerShell Core 它可以在 post 位置上用于 运行 作为后台作业的命令。
最简单的选择是使用嵌入的 '...'
引号,正如 Olaf 所建议的,因为 '
个字符。不需要在 "..."
内转义。 PowerShell 中的 '...'
字符串是 文字 字符串,在这种情况下很好,因为 URL 不包含变量引用。
powershell -Command "Invoke-WebRequest 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234' -OutFile output.tsv"
如果字符串插值需要嵌入 "..."
引号,请使用 \"
(sic) 转义嵌入 ("
) 字符. (请注意 inside PowerShell,您需要使用 `"
或 ""
代替):
powershell -Command "Invoke-WebRequest \"https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234\" -OutFile output.tsv"
我正在尝试通过批处理文件下载 Google sheet。这有效:
powershell -Command "Invoke-WebRequest https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv -OutFile output.tsv"
当我通过添加 &gid=1234 指定我想要的 sheet/tab 时,这中断了:
powershell -Command "Invoke-WebRequest https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234 -OutFile output.tsv"
错误是:
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
如何在不破坏 Command 参数的外部引号的情况下将 & 符号括在引号中?
传递给powershell -Command
的"..."
字符串中嵌入的URL也必须被引用,因为一个unquoted &
对 PowerShell 也有特殊意义(尽管在 Windows PowerShell 中它目前仅保留供将来使用;在 PowerShell Core 它可以在 post 位置上用于 运行 作为后台作业的命令。
最简单的选择是使用嵌入的 '...'
引号,正如 Olaf 所建议的,因为 '
个字符。不需要在 "..."
内转义。 PowerShell 中的 '...'
字符串是 文字 字符串,在这种情况下很好,因为 URL 不包含变量引用。
powershell -Command "Invoke-WebRequest 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234' -OutFile output.tsv"
如果字符串插值需要嵌入 "..."
引号,请使用 \"
(sic) 转义嵌入 ("
) 字符. (请注意 inside PowerShell,您需要使用 `"
或 ""
代替):
powershell -Command "Invoke-WebRequest \"https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/export?exportFormat=tsv&gid=1234\" -OutFile output.tsv"