Windows批处理脚本中的URL编码

Rob*_*bP2 6 python linux windows batch-file

我有一个Windows批处理脚本,用于快速谷歌搜索.但是,我无法弄清楚如何一般编码特殊字符.就像我试图搜索C#一样,英镑符号会破坏它.这是我的代码:

SET q="https://www.google.com/#q=%*"
SET q=%q: =+%
chrm %q%
Run Code Online (Sandbox Code Playgroud)

Jus*_*tte 8

我认为在Windows bat脚本中直接执行此操作并不是一种好方法.对于像这样的更重的东西来说,Python是一个很好的解决方案,它是跨平台的,总是很好.由于您使用的是Windows,因此您可以编写一个PowerShell脚本来执行此操作.但是,这是我编写的Python 3脚本,我认为它正在寻找你正在寻找的东西.

import sys
import subprocess
import urllib.parse

browser = sys.argv[1]
browserParms = sys.argv[2]

queryString = " ".join(sys.argv[3:])
queryString = urllib.parse.quote(queryString)
url = "https://www.google.com/#q=" + queryString

subprocess.Popen([browser, browserParms, url])

sys.exit()
Run Code Online (Sandbox Code Playgroud)

这是Linux的本机脚本,您可以在其中设置您的详细信息.您可以在Windows批处理文件中执行非常类似的操作.我把它命名为goog(没有扩展名,因为输入太多了:))

#!/bin/bash
python3 /home/justin/Dropbox/MyFiles/Programs/CrossPlatform/Python3/GoogleSearch.py "firefox" "-new-window" "$@"
Run Code Online (Sandbox Code Playgroud)

确保您的本机脚本位置在$ PATH中.从终端或运行命令执行如下操作.

goog i like turtles
Run Code Online (Sandbox Code Playgroud)


npo*_*aka 8

无需安装任何外部工具:

@echo off
setlocal


set "string=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("%string%") %endJS%'
) do set encoded=%%N
echo %string% -^> %encoded%
Run Code Online (Sandbox Code Playgroud)