【问题标题】:URL Encode in Windows Batch ScriptWindows 批处理脚本中的 URL 编码
【发布时间】:2016-05-13 05:04:24
【问题描述】:

我有一个 Windows 批处理脚本,用于快速进行 Google 搜索。但是,我不知道如何对特殊字符进行一般编码。就像我尝试搜索 C# 一样,井号会破坏它。这是我的代码:

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

【问题讨论】:

  • 如果您退后一步考虑一下,这很容易。在 Google 上搜索 C#,然后查看 Google 在您的浏览器中返回的 url。
  • @Squashman 我想他想编码所有个特殊字符,而手动这样做会花费很长时间
  • 丹尼斯是正确的。我知道如何手动查找字符编码。 npocmaka 成功了,我接受了他的回答。

标签: python linux windows batch-file


【解决方案1】:

无需安装任何外部工具:

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

【讨论】:

  • 非常好!这正是我想要的。
【解决方案2】:

我认为没有直接在 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

【讨论】:

  • 这是一个很好的解决方案,但我不得不将 npocmaka 的解决方案标记为已接受,因为它确实是我正在寻找的。我不想安装python。
猜你喜欢
  • 1970-01-01
  • 2010-10-06
  • 2021-05-30
  • 1970-01-01
  • 2015-02-09
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多