Windows批处理脚本中的URL编码

时间:2016-02-03 20:02:07

标签: python linux windows batch-file

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

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

2 个答案:

答案 0 :(得分: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()

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

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

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

goog i like turtles

答案 1 :(得分:7)

无需安装任何外部工具:

@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%