Encodage d’URL dans Windows Batch Script

J’ai un script de lot Windows que j’utilise pour effectuer des recherches rapides sur Google. Cependant, je ne peux pas comprendre comment encoder génériquement des caractères spéciaux. Comme si j’essayais de rechercher le C #, le pound le casse. Voici mon code:

SET q="https://www.google.com/#q=%*" SET q=%q: =+% chrm %q% 

Sans installer aucun outil externe:

 @echo off setlocal set "ssortingng=gibberish+?blahblah@" :: Define simple macros to support JavaScript within batch set "beginJS=mshta "javascript:code(close(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(" set "endJS=)));"" :: FOR /F does not need pipe for /f %%N in ( '%beginJS% encodeURIComponent("%ssortingng%") %endJS%' ) do set encoded=%%N echo %ssortingng% -^> %encoded% 

Je ne pense pas qu’il y ait un bon moyen de le faire directement dans un script Windows. Python est une excellente solution pour certaines choses plus lourdes comme celle-là, et c’est une plate-forme croisée qui est toujours agréable. Puisque vous êtes sous Windows, vous pouvez probablement écrire un script powershell pour le faire. Cependant, voici un script Python 3 que j’ai écrit et qui fait selon moi ce que vous cherchez.

 import sys import subprocess import urllib.parse browser = sys.argv[1] browserParms = sys.argv[2] querySsortingng = " ".join(sys.argv[3:]) querySsortingng = urllib.parse.quote(querySsortingng) url = "https://www.google.com/#q=" + querySsortingng subprocess.Popen([browser, browserParms, url]) sys.exit() 

Voici un script natif pour Linux où vous pouvez définir vos spécificités. Vous pouvez faire quelque chose de très similaire dans un fichier batch Windows. Je l’ai nommé goog (sans extension car ce serait trop pour taper :))

 #!/bin/bash python3 /home/justin/Dropbox/MyFiles/Programs/CrossPlatform/Python3/GoogleSearch.py "firefox" "-new-window" "$@" 

Assurez-vous que votre emplacement de script natif est dans $ PATH. Exécutez comme ceci à partir du terminal ou exécutez une commande.

 goog i like turtles