Jak zmienić znaczenie znaku ampersand w pliku wsadowym (lub w wierszu poleceń systemu Windows), aby użyć start
polecenia do otwierania stron internetowych ze znakami ampersand w adresie URL?
Podwójne cudzysłowy nie będą działać z start
; zamiast tego uruchamia nowe okno wiersza poleceń.
Aktualizacja 1 : Rozwiązanie Wael Dalloul działa. Ponadto, jeśli w adresie URL znajdują się znaki zakodowane w adresie URL (np. Spacja jest zakodowana jako% 20) i znajduje się on w pliku wsadowym, wówczas „%” musi być zakodowane jako „%%”. Tak nie jest w tym przykładzie.
Przykład z wiersza poleceń ( CMD.EXE
):
start http://www.google.com/search?client=opera&rls=en&q=escape+ampersand&sourceid=opera&ie=utf-8&oe=utf-8
spowoduje
http://www.google.com/search?client=opera
otwierane w domyślnej przeglądarce i te błędy w oknie wiersza poleceń:
'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.
Platforma: Windows XP 64-bitowy z dodatkiem SP2.
+
co powinienem umieścić z przodu, aby przed nim uciec?
start "http://www.google.com/search?client=opera&rls=en&q=escape+ampersand&sourceid=opera&ie=utf-8&oe=utf-8"
działa, ponieważ PowerShell usunie cytaty
start
które powoduje, że cytowanie argumentu zawodzi, jeśli zostanie zastosowane bez namysłu. Ogólnie myślę, że zamknięcie argumentu w cudzysłowie jest łatwiejsze i mniej podatne na błędy niż ucieczka przed każdą postacią, która musi tam uciec.