Как включить амперсанды в команду powershell в командном файле? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь загрузить лист 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 голосов
/ 28 февраля 2019

URL-адрес, вставленный в строку "...", переданную powershell -Command, также должен быть заключен в кавычки , поскольку и без кавычек & имеет специальное значение дляТакже PowerShell (хотя в Windows PowerShell он в настоящее время зарезервирован только для будущего использования; в PowerShell Core он может использоваться постпозиционно для запуска команды в качестве фонового задания).

The Самый простой вариант - использовать встроенную '...' кавычку , как предлагает Olaf , потому что ' chars.не нужно убегать внутрь "...".* Строка '...' в PowerShell - это строка literal , что хорошо в этом случае, если учесть, что URL не содержит ссылок на переменные.

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

Если встроено "..." цитированиенеобходим для интерполяции строк, используйте \" (sic) для экранирования встроенных (") символов.(обратите внимание, что внутри PowerShell, вам нужно будет использовать `" или "" вместо этого):

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