gpt4 book ai didi

windows - 从命令行执行 URL 而无需在 Windows 中打开浏览器

转载 作者:可可西里 更新时间:2023-11-01 09:47:28 37 4
gpt4 key购买 nike

所以我将一个批处理文件放在一起,在启动时运行,执行少量进程,其中一个是在进程集结束时执行某个程序的重启。我一直在寻找如何在 Windows 的命令行中执行此操作的方法,但我需要能够在不打开浏览器的情况下执行此操作。我需要的是在完全不打开浏览器的情况下在以下 url 中执行重启。

http://192.168.1.100/cgi-bin/reboot

我尝试过的所有操作都打开了一个新的浏览器窗口。如果可能的话,我不想下载任何东西来让它在 Windows 中运行。感谢您的任何建议。

最佳答案

您知道有时您提出的问题的答案是 not necessarily the answer you need ?我有一个模糊的怀疑,这可能是那些时代之一。

如果这是您尝试重新启动的 Windows 机器,您可以远程重新启动它,而无需使用远程主机提供的 CGI 脚本。如果您在触发 PC 上登录的帐户在远程 PC 上也有权限,您可以使用 shutdown 命令触发重启。

shutdown /m \\remotePC /r /t 0

在 cmd 控制台中执行 shutdown/? 以获取更多信息。或者,如果您必须进行身份验证,则可以改用 wmic

wmic /node:remotePC /user:remotePCadmin /password:remotePCpass process call create "shutdown -r -t 0"

如果我弄错了,这里是您所问问题的答案。执行远程 CGI 脚本的最快方法是使用带有 Windows 脚本宿主(VBScript 或 JScript)的 XMLHTTPRequest。这是一个例子。

@if (@CodeSection == @Batch) @then
@echo off & setlocal

set "URL=http://192.168.1.100/cgi-bin/reboot"
cscript /nologo /e:jscript "%~f0" "%URL%"

goto :EOF
@end // end batch / begin JScript chimera

var x = WSH.CreateObject("Microsoft.XMLHTTP");

x.open("GET",WSH.Arguments(0),true);
x.setRequestHeader('User-Agent','XMLHTTP/1.0');
x.send('');
while (x.readyState != 4) WSH.Sleep(50);

就其值(value)而言,您还可以根据需要解析 x.responseText。您可以将其作为平面文本抓取,甚至可以将其作为分层 DOM 对象进行评估。 This answer demonstrates这样的解析。如果你还不够,here are more examples .


如果您宁愿以牺牲效率为代价获得更简单的东西,您可以调用 PowerShell 命令。

@echo off & setlocal

set "URL=http://192.168.1.100/cgi-bin/reboot"
powershell "ipmo BitsTransfer; Start-BitsTransfer \"%URL%\" \"%temp%\a\""
del /q "%temp%\a"

goto :EOF

您也可以使用 Invoke-WebRequest 来避免临时文件,但是 Invoke-WebRequest 需要 PowerShell 版本 3 或更新版本。 Start-BitsTransfer 适用于 PowerShell 版本 2,因此它应该适用于更多计算机。也可以使用 [System.Net]::WebRequest .NET 类,但构建除获取 HTTP header 之外继续让 Web 服务器为 Web 提供服务所需的所有对象会变得有点复杂页。如果你很好奇,它看起来像这样:

powershell "[void](new-object IO.StreamReader([Net.WebRequest]::Create(\"%URL%\").GetResponse().GetResponseStream())).ReadToEnd()"

不完全是我所说的简单。为便于阅读而采用混合格式:

<# : batch portion
@echo off & setlocal

set "URL=http://192.168.1.100/cgi-bin/reboot"
powershell -noprofile "iex (${%~f0} | out-string)"

goto :EOF

: end batch / begin PowerShell hybrid chimera #>

$request = [Net.WebRequest]::Create($env:URL)
$response = $request.GetResponse()
$stream = $response.GetResponseStream()
$reader = new-object IO.StreamReader($stream)
[void]$reader.ReadToEnd()

在任何情况下,任何 PowerShell 解决方案都会比此答案顶部附近的 JScript 解决方案慢一两秒。 powershell.exe 需要一两秒钟才能加载(实际上,如果自上次 Windows 重新启动后未加载它,则需要几秒钟);而 cscript.exe 几乎立即触发。

关于windows - 从命令行执行 URL 而无需在 Windows 中打开浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947181/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com