我有一个Windows批处理脚本,用于快速搜索Google。但是,我无法弄清楚如何对特殊字符进行一般编码。就像我试图搜索C#一样,英镑符号会破坏它。这是我的代码:
SET q="https://www.google.com/#q=%*"
SET q=%q: =+%
chrm %q%
答案 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%