Batch file 在无人参与的批处理控制下打开HTTPS URL
我的问题是,当UPS告诉我的家庭服务器停电时,我需要向NAS发送关机命令。我想通过使用(Windows 10 Home)PC服务器的关闭通知来实现这一点,该通知可以在关闭事件中触发批处理文件,而不是使用额外的硬件。我已经确定打开一个特定的URL会导致NAS正常关闭 这些问题似乎与试图绕过导致浏览器的对话有关。首先,它要求提供凭证。我可以通过在URL调用中包含它们来绕过这个问题,如下所示: 启动“”“C:\Program Files\Mozilla Firefox\Firefox.exe” “”Batch file 在无人参与的批处理控制下打开HTTPS URL,batch-file,https,automation,dialog,unattended-processing,Batch File,Https,Automation,Dialog,Unattended Processing,我的问题是,当UPS告诉我的家庭服务器停电时,我需要向NAS发送关机命令。我想通过使用(Windows 10 Home)PC服务器的关闭通知来实现这一点,该通知可以在关闭事件中触发批处理文件,而不是使用额外的硬件。我已经确定打开一个特定的URL会导致NAS正常关闭 这些问题似乎与试图绕过导致浏览器的对话有关。首先,它要求提供凭证。我可以通过在URL调用中包含它们来绕过这个问题,如下所示: 启动“”“C:\Program Files\Mozilla Firefox\Firefox.exe” “”
现在,它弹出了一个对话框,要求我确认我想以“用户名”登录,再次挫败了我让这个运行无人值守的尝试(停电时我可能在任何地方)。有办法解决这个问题吗?仅供参考,我放弃了与微软Edge的合作,因为它通过在任何地方插入空格将URL参数切割成碎片。每次我尝试它时,它都会手动抱怨安全证书。我想我的浏览器也会遇到同样的确认请求问题。因此,我需要一种方法来超越所有这些对话,只需进行URL调用。有什么想法吗?在这个问题发布24小时后,没有任何答案告诉我,这是一个棘手的问题&让我一直在尝试。在我尝试了所有我能想到的方法用Window自己的工具集来解决这个问题后,我发现什么都不管用,我意识到我需要一些额外的东西来解决这个问题。最后我放弃并安装了免费软件,编写了一个脚本来完成整个工作,包括处理对话框。一旦一切正常,为了方便起见,我从脚本中创建了一个可执行文件,这样我就可以很容易地从关闭批处理(.bat)文件中调用它。这个解决方案有效。以下是为需要解决类似问题的任何人编写的脚本:
> runWait, C:\Program Files\Mozilla Firefox\firefox.exe
> https://admin:password@192.168.1.10/get_handler?PAGE=System&OUTER_TAB=tab_shutdown&INNER_TAB=NONE&shutdown_option1=1&command=poweroff&OPERATION=set
>
> #Persistent SetTimer, MsgBoxCheck, 3000 return
>
> MsgBoxCheck: If WinExist("ahk_class MozillaDialogClass") {
> SetControlDelay -1 ControlClick, , Confirm, SetTimer,
> MsgBoxCheck, off exitApp } else { SetTimer, MsgBoxCheck, off
> MsgBox, 4, , Debug - No Confirm Window Found. exitApp } return
请注意,要在非Mozilla程序中实现这一点,您需要更改ahk_类参数。我建议您使用Windows Spy来确定要关闭的窗口的类别。您还需要将“确认”更改为您窗口的任何标题。在这个问题发布24小时后,没有任何答案,这告诉我这是一个棘手的问题,让我一直在尝试。在我尝试了所有我能想到的方法用Window自己的工具集来解决这个问题后,我发现什么都不管用,我意识到我需要一些额外的东西来解决这个问题。最后我放弃并安装了免费软件,编写了一个脚本来完成整个工作,包括处理对话框。一旦一切正常,为了方便起见,我从脚本中创建了一个可执行文件,这样我就可以很容易地从关闭批处理(.bat)文件中调用它。这个解决方案有效。以下是为需要解决类似问题的任何人编写的脚本:
> runWait, C:\Program Files\Mozilla Firefox\firefox.exe
> https://admin:password@192.168.1.10/get_handler?PAGE=System&OUTER_TAB=tab_shutdown&INNER_TAB=NONE&shutdown_option1=1&command=poweroff&OPERATION=set
>
> #Persistent SetTimer, MsgBoxCheck, 3000 return
>
> MsgBoxCheck: If WinExist("ahk_class MozillaDialogClass") {
> SetControlDelay -1 ControlClick, , Confirm, SetTimer,
> MsgBoxCheck, off exitApp } else { SetTimer, MsgBoxCheck, off
> MsgBox, 4, , Debug - No Confirm Window Found. exitApp } return
请注意,要在非Mozilla程序中实现这一点,您需要更改ahk_类参数。我建议您使用Windows Spy来确定要关闭的窗口的类别。您还需要将“确认”更改为您窗口的任何标题。我也看了您的帖子以获得答案。我从bat文件中执行了几行powershell代码,就可以完成它。谢谢你,古吉斯伯格,但是自动热键解决方案工作得很好,而且它不需要我学习“powershell”——这是另一种我不熟悉的技术——但是谢谢你的提议!我也看了你的帖子寻求答案。我从bat文件中执行了几行powershell代码,就可以完成它。谢谢你,古吉斯伯格,但是自动热键解决方案工作得很好,而且它不需要我学习“powershell”——这是另一种我不熟悉的技术——但是谢谢你的提议!