Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从命令行执行URL,而无需在windows中打开浏览器_Windows_Batch File - Fatal编程技术网

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

从命令行执行URL,而无需在windows中打开浏览器,windows,batch-file,Windows,Batch File,所以我准备了一个批处理文件,在启动时运行,它执行少量的进程,其中之一是在进程集结束时重新启动某个程序。我一直在寻找如何在windows的命令行中执行此操作的方法,但我需要能够在不打开浏览器的情况下执行此操作。我需要的是在不打开浏览器的情况下在下面的url中执行重新启动 http://192.168.1.100/cgi-bin/reboot 我尝试过的一切都打开了一个新的浏览器窗口。如果可能的话,我不想在windows上下载任何东西。谢谢您的建议。如果您无法下载任何内容,那么Windows Po

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

http://192.168.1.100/cgi-bin/reboot

我尝试过的一切都打开了一个新的浏览器窗口。如果可能的话,我不想在windows上下载任何东西。谢谢您的建议。

如果您无法下载任何内容,那么Windows PowerShell是最佳选择。您可以从PS脚本文件或直接从批处理文件的命令行调用它:

powershell.exe -noprofile -command "Invoke-WebRequest -Uri http://192.168.1.100/cgi-bin/reboot"
<>你也可以考虑那种类型的过程。Windows中没有等效软件,因此需要下载

curl http://192.168.1.100/cgi-bin/reboot

Curl不会打开浏览器窗口,并且有很好的命令行选项(请参见
Curl-help
),并且会返回错误代码以处理批处理文件错误。

我认为Windows没有该功能


尝试制作一个VBscript,它将打开浏览器窗口,但可能不会显示任何内容。

您知道有时您所问问题的答案是什么吗?我有一个模糊的怀疑,这可能是其中的一次

如果这是您试图重新启动的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脚本的最快方法是将XMLHTTPRequest与Windows脚本主机(VBScript或JScript)一起使用。这里有一个例子

@如果(@code节==@Batch)@那么
@echo off和setlocal
设置“URL”=http://192.168.1.100/cgi-bin/reboot"
cscript/nologo/e:jscript“%~f0”“%URL%”
后藤:EOF
@结束//结束批处理/开始JScript chimera
var x=WSH.CreateObject(“Microsoft.XMLHTTP”);
x、 open(“GET”,WSH.Arguments(0),true);
x、 setRequestHeader('User-Agent','XMLHTTP/1.0');
x、 发送(“”);
而(x.readyState!=4)睡眠不足(50);
您还可以根据需要解析
x.responseText
。您可以将其刮取为平面文本,甚至可以将其作为分层DOM对象进行计算。这样的解析。如果你不能得到足够的


如果您希望以牺牲效率为代价实现更简单的功能,可以调用PowerShell命令

@echo off&setlocal
设置“URL”=http://192.168.1.100/cgi-bin/reboot"
powershell“ipmo BitsTransfer;启动BitsTransfer\%URL%\\\%temp%\a”
删除/q“%temp%\a”
后藤:EOF

您也可以使用
Invoke WebRequest
来避免临时文件,但是
Invoke WebRequest
需要PowerShell版本3或更高版本
Start BitsTransfer
适用于PowerShell版本2,因此它应该可以在更多的计算机上使用。您也可以使用
[System.Net]::WebRequest
.Net类,但要构建从获取HTTP头到让web服务器为web页面提供服务所需的所有对象,会有点复杂。如果你好奇,它看起来像这样:

powershell“[void](新对象IO.StreamReader([Net.WebRequest]::创建(\%URL%\”).GetResponse().GetResponseStream()).ReadToEnd()
不完全是我所说的简单。混合格式更易于阅读:


$request=[Net.WebRequest]::Create($env:URL)
$response=$request.GetResponse()
$stream=$response.GetResponseStream()
$reader=新对象IO.StreamReader($stream)
[void]$reader.ReadToEnd()

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

要直接处理URL响应,请从Win CMD:

powershell "Invoke-WebRequest -Uri <url>"
powershell "[System.Net.Webclient]::new().DownloadString(\"<URL>\")"
powershell“调用WebRequest-Uri”
要将服务器响应保存到文件,请执行以下操作:

powershell "Invoke-WebRequest -Uri <url> -outfile <file.ext>"
powershell“调用WebRequest-Uri-outfile”
.NET解决方案;从Win CMD:

powershell "Invoke-WebRequest -Uri <url>"
powershell "[System.Net.Webclient]::new().DownloadString(\"<URL>\")"
powershell“[System.Net.Webclient]::new().DownloadString(\“\”)”

使用xmlhttprequest,或使用PowerShell cmdlet下载
重新启动
。一两个小时后我会举个例子来回答。如果你能给我举个例子,我将不胜感激。谢谢你的建议,我会尝试一下,现在告诉你结果如何。我真的很想找到一种方法来实现这一点,而不需要任何额外的下载,因为我将不得不把它放在多台我可能无法下载到的机器上。
Invoke WebRequest
在Windows 10(可能还有8.x?)下运行良好,但是当从批处理脚本调用时,我使用的每台Windows 7计算机都默认为PowerShell版本2。如果可能,您可以/应该在这些计算机上升级PowerShell。我在Windows7/PS3上测试了这个。如果您一直使用PowerShell 2,请参阅感谢您的详细回复。重新启动的机器不是windows机器,我想我应该在原始问题中这样说。我将尝试您的第二个和第三个解决方案,看看哪一个最适合我所寻找的。@Destrocontut结论是什么?当我尝试运行powershell脚本时,powershell应用程序窗口会打开,然后很快关闭,但所需的结果并不存在。而且,它打开得很快,我可以阅读文本来了解发生了什么。我可能得把卷发发发到所有的盒子里