Как экранировать амперсанды в командном файле (или из командной строки Windows), чтобы использовать start
команду для открытия веб-страниц с амперсандами в URL-адресе?
Двойные кавычки не будут работать с start
; вместо этого запускается новое окно командной строки.
Обновление 1 : решение Wael Dalloul работает. Кроме того, если в URL есть символы, закодированные в URL (например, пробел закодирован как% 20), и он находится в пакетном файле, то «%» должен быть закодирован как «%%». Это не тот случай в примере.
Пример из командной строки ( CMD.EXE
):
start http://www.google.com/search?client=opera&rls=en&q=escape+ampersand&sourceid=opera&ie=utf-8&oe=utf-8
приведет к
http://www.google.com/search?client=opera
открывается в браузере по умолчанию и эти ошибки в окне командной строки:
'rls' is not recognized as an internal or external command,
operable program or batch file.
'q' is not recognized as an internal or external command,
operable program or batch file.
'sourceid' is not recognized as an internal or external command,
operable program or batch file.
'ie' is not recognized as an internal or external command,
operable program or batch file.
'oe' is not recognized as an internal or external command,
operable program or batch file.
Платформа: Windows XP 64 бит SP2.
+
что я должен поставить перед ним, чтобы избежать этого?
start "http://www.google.com/search?client=opera&rls=en&q=escape+ampersand&sourceid=opera&ie=utf-8&oe=utf-8"
работает, потому что PowerShell
start
которых цитирование аргумента терпит неудачу, если применяется без размышлений. В целом, я думаю, что заключить аргумент в кавычки проще и менее подвержено ошибкам, чем избегать каждого символа, который нуждается в экранировании.