【问题标题】:Open a URL without using a browser from a batch file不使用浏览器从批处理文件打开 URL
【发布时间】:2013-12-26 09:56:16
【问题描述】:

我想打开一个特定的 URL,而不是直接使用批处理文件打开浏览器。我知道我可以使用类似的东西:

START www.google.com

但我想在不使用浏览器的情况下打开 URL。这可能吗?

原因是我必须打开大约 30 个 URL,我不希望用户在他/她的电脑上打开大约 30 个标签。

【问题讨论】:

  • 可以使用wget或者curl,见superuser.com/questions/25538/…
  • 你的真正意图是什么? “打开一个 URL”对我来说意味着打开一个浏览器页面以允许用户浏览它。
  • 如果您不使用浏览器,您将看不到www.google.com 页面。你在做其他事情吗,比如下载文件?
  • “不使用浏览器打开 URL”是什么意思?应该发生什么?例如,是否应该将相应的 HTML 内容保存到磁盘?如果是,那么其他内容(图像、CSS、JavaScript 等)呢?

标签: batch-file cmd


【解决方案1】:

如果您只想请求 URL,并且需要从批处理文件中完成,而不需要操作系统之外的任何内容,这可以帮助您:

@if (@This==@IsBatch) @then
@echo off
rem **** batch zone *********************************************************

    setlocal enableextensions disabledelayedexpansion

    rem The batch file will delegate all the work to the script engine
    if not "%~1"=="" (
        wscript //E:JScript "%~dpnx0" %1
    )

    rem End of batch file area. Ensure the batch file ends execution
    rem before reaching the JavaScript zone
    exit /b

@end


// **** JavaScript zone *****************************************************
// Instantiate the needed component to make URL queries
var http = WScript.CreateObject('Msxml2.XMLHTTP.6.0');

// Retrieve the URL parameter
var url = WScript.Arguments.Item(0)

// Make the request

http.open("GET", url, false);
http.send();

// All done. Exit
WScript.Quit(0);

它只是一个混合批处理/JavaScript 文件,保存为callurl.cmd 并称为callurl "http://www.google.es"。它会做你所要求的。没有错误检查,没有帖子,只是一个骨架。

如果可以在操作系统之外使用某些东西,wgetcurl 可以作为 Windows 可执行文件使用,是最好的选择。

如果您受到某种安全策略的限制,您可以获取Internet Information Services (IIS) 6.0 Resource Kit Tools。它包括tinygetwfetch 工具,可以满足您的需求。

【讨论】:

  • 有人想知道,这是如何工作的,%~dpnx0 指定了当前正在运行的文件的完整路径,所以我们通过 ( //E 调用 wscript 将其作为 JavaScript 文件运行:engine ),其中选择的引擎是 JavaScript,%1 是批处理文件的第一个参数,这是向前传递的。有趣的解决方案。
  • @square_eyes,如前所述,它作为参数传递给批处理文件。您可以将所有对%1(批处理文件的第一个参数)的引用替换为您想要的网址(如果它包含特殊字符,请不要忘记引号)
  • @EdsonRodrigues,如果您不想使用指示的行为(调用批处理文件时将 url 作为参数给出)替换代码中的 %1(批处理的第一个参数文件)与您要使用的网址(最好引用它以避免特殊字符的问题)。
  • @EdsonRodrigues,尝试更改实例化组件。将Msxml2.XMLHTTP.6.0 替换为Msxml2.ServerXMLHTTP.6.0
  • @Sirk,检查this。您将不需要报价处理,但代码包含错误处理
【解决方案2】:

您可以使用WgetcURL,请参阅How to download files from command line in Windows like wget or curl

然后你会做例如:

wget www.google.com

【讨论】:

  • 不知何故,您帖子中的链接会自动重定向到 - superuser.com/questions/25538/…
  • @RBT 有人编辑了该帖子:superuser.com/posts/25538/revisions
  • wget 和 curl 不包含在 stock/vanilla windows 中,所以如果你想与其他人共享一个快速/简单的脚本,这并不总是一个很好的选择......第 1 步:下载这些其他工具并配置它们(对于“简单”的脚本解决方案来说似乎很痛苦)。
【解决方案3】:

您可以使用HH command 打开任何网站。

hh <http://url>

例如,

hh http://shuvankar.com

虽然它不会在浏览器中打开网站,但会在 HTML 帮助窗口中打开网站。

【讨论】:

  • 非常适合访问网站以记录 IP 或启动脚本。 注意(正如 OP 所说,)用户看不到该网站,并且必须关闭显示“找不到页面”的尴尬帮助弹出窗口。
  • @Shuvankar Sarkar,调用后如何关闭脚本中弹出的 HTML 帮助窗口?
  • 有没有办法在没有 GUI 的情况下在后台调用它
【解决方案4】:

不确定您是否已经获得了所有者的解决方案。我一直在使用以下 powshell 命令来实现它:

powershell.exe -noprofile -command "Invoke-WebRequest -Uri http://your_url"

【讨论】:

  • 哇,这就像一个魅力。如此简单,就可以完成这项工作。
  • 尝试使用 https 和使用任务计划程序的自签名证书,然后简单性就消失了。
【解决方案5】:

试试winhttpjs.bat。它使用了一个应该比
更快的 winhttp 请求对象 Msxml2.XMLHTTP 因为没有任何 DOM 解析响应。它能够使用正文和所有 HTTP 方法进行请求。

call winhttpjs.bat  http://somelink.com/something.html -saveTo c:\something.html

【讨论】:

  • 如何在linux中使用
  • Winhttpjs.bat 是我的最爱之一! @Gem winhttpjs.bat 是为批处理设计的工具,它是一种仅限 Windows 的编码语言。在 linux 上有 bash 内置工具,例如 curlwget 来完成工作。
【解决方案6】:

你可以使用这个命令:

start /min iexplore http://www.google.com

使用/min,无需在浏览器中打开就可以直接点击URL。

【讨论】:

  • 此解决方案仍会启动浏览器(但将焦点保持在当前应用上)。
【解决方案7】:

您可以尝试输入该站点的快捷方式并告诉 .bat 文件打开它。

start Google.HTML
exit

【讨论】:

  • OP 要求提供无法在浏览器中打开的解决方案,并且已经表示他知道 START 命令,并且他不喜欢结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 2012-04-30
相关资源
最近更新 更多