windows – 如何使用VBScirpt在已打开的CMD窗口中执行命令
我正在尝试自动执行必须每天完成的备份.我有一个在CMD中运行的程序,需要在运行备份之前正确关闭.
需要关闭的两个命令是: 关掉 是的(承认行动) 然后可以关闭CMD窗口,并且我已经编写了.bat文件来执行备份. 我从来没有写过非常简单的VBScripts,所以如果我的问题不够明确,我很抱歉. 这个想法是这样的 – 使用VBScript,键入shutdown {Enter}和yes {Enter},然后关闭该CMD窗口,然后执行备份批处理文件,该文件已经设置为在完成备份后启动CMD程序. 操作系统 – Windows XP Professional 谢谢!
您可以尝试通过将按键作为Windows消息发送到运行程序的CMD窗口以编程方式键入命令.
我不知道VBS,也许它有一个功能或函数映射到系统API函数 基本上,该实用程序允许您将任意Windows消息发送到任意窗口,如下所示: SendMessage.exe target_specification /message:value /wparam:value /lparam:value 我将稍后解决target_specification位,其他参数是: > / message:value – 正在发送的消息,由代码指定.在你的情况下,它将是以下之一: /message:WM_CHAR /message:258 /message:0x0102 这些都指定了WM_CHAR message. 在您的情况下,由于您的命令仅由ASCII字符组成,因此所有代码都将匹配相应字符的ASCII代码.因此,您可以使用ASCII chart转换命令中的字符.例如,s将是 /wparam:115 和h /wparam:104 等等. 请注意,您还需要发送Enter键.根据ASCII control code chart,它会 /wparam:13 > / lparam:value – 从WM_CHAR’s manual page可以看出LPARAM参数实际上应该作为单个数值携带多条信息.但是,对于您的具体情况,只需记住该参数应该简单地指定为 /lparam:1 现在到目标规范部分.这个可能很棘手.您将从the tool’s web page的描述中了解到指定目标窗口的方法有多种.但是,并非每种方法都适用于您. 例如,您可以尝试按进程名称指定目标: /processname:name_of_your_executable 但是,如果您没有直接调用您的程序,而是在例如批处理文件,然后程序将不会在自己的窗口中运行,而是借用托管CMD会话的窗口,因此这种方法可能无法正常工作. 如果这确实是您调用程序的方式,那么您可以尝试使用窗口标题来指定目标: /windowtitle:window_title 这里要记住的唯一警告是标题必须唯一地标识所需的窗口,否则键击将被发送到与指定标题匹配的所有窗口.您可以尝试通过在调用程序的批处理中使用title命令来统一标题(在调用程序之前设置它). 因此,总结一下,完整的备份脚本(批处理脚本)可能是这样的,假设为了示例的目的,目标窗口将由其标题指定: @ECHO OFF :: s SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:115 /lparam:1 :: h SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:104 /lparam:1 :: u SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:117 /lparam:1 :: t SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:116 /lparam:1 :: d SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:100 /lparam:1 :: o SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:111 /lparam:1 :: w SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:119 /lparam:1 :: n SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:110 /lparam:1 :: ENTER SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:13 /lparam:1 :: y SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:121 /lparam:1 :: e SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:101 /lparam:1 :: s SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:115 /lparam:1 :: ENTER SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:13 /lparam:1 :: wait for some time (~3 sec) till the program shuts down,if necessary PING -n 4 localhost 1>NUL :: proceed with the back-up ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – 诊断VM上的慢速数据处理
- .net – 加载Azure Storage 2.0时出错 – 无法加载Microsof
- Windows-8 – HDD序列号在Windows XP,Vista和7中每2个字节翻
- windows – rDesktop的最佳小型Linux发行版
- iis-7 – 如何以编程方式打开IIS的DynamicCompression功能?
- 如何在Windows中设置和使用Jpegtran
- windows-7 – 强制注销Windows 7工作站上的空闲用户,并启用
- 一条线的分段节点问题第二次测试
- 调试 – 使用Fiddler调试Windows Phone 7模拟器
- 如何使用Windows命令获取剪贴板内容?
- 如何在Windows中识别默认的Java heapsize
- windows-runtime – ToastNotifier.GetScheduled
- windows-server-2008 – ec2上windows服务器的服
- windows-server-2012-r2 – 在哪里可以找到Micro
- Windows – 如何成功更改执行策略并启用Powershe
- windows-server-2008 – 重新插入RAID磁盘.定义为
- 使用fiddler 抓取windows 10 应用程序https流量
- windows-server-2012-r2 – Windows Server 2012
- windows – 复制两个大卷之间不同的文件?
- WPF图标规范,支持Windows 7并向后兼容