前言:
此刻姐妹们对“bat 执行”大概比较关切,各位老铁们都想要分析一些“bat 执行”的相关文章。那么小编同时在网摘上网罗了一些有关“bat 执行””的相关知识,希望我们能喜欢,你们快快来学习一下吧!近期有个应用需求,通过批处理指令打开一个应用程序(Vivado)的Shell,还需要在该Shell下自动输入指令执行某些操作,但通过自带的CMD命令行可以调用出Shell,就是无法自动输入和执行指令。
需要执行的指令非常简单,先看最初的批处理指令:
C:
cd C:\Xilinx\Vivado\2015.4\bin\
Vivado.bat -mode tcl
Program_flash -f E:\BOOT.bin offset 0 -flash_type qspi_single -cable type xilinx_tcf
执行以上批处理指令后,将会修改“cmd.exe”的命令行窗口名为“cmd.exe -vivado.bat -mode tcl”,但上述标红色字体就是无法在新的命令行窗口名下自动打印和执行。
查询了大量资料,发现一个解决办法是通过vbs脚本可以解决问题,主要是vbs脚本可以通过shell窗口名称来切换当前Shell窗口。
具体实现方法为:
1、通过写一个批处理脚本自动创建一个vbs脚本,该脚本用于执行前文所述的批处理指令(还需要添加切换Shell窗口指令等);
2、再通过批处理脚本调用创建的vbs脚本。
创建vbs脚本的批处理文件的批处理代码为(标红的为关键代码):
C:
@del C:\temp.vbs
@echo on error resume next>>C:\temp.vbs
@echo dim WshShell>>C:\temp.vbs ‘创建一个对象wshshell
@echo Set WshShell =WScript.CreateObject(“WScript.Shell”)>>C:\temp.vbs
@echo WshShell.run “cmd”>>C:\temp.vbs ‘用WshShell对象的Run方法打开cmd
@echo WshShell.AppActivate”cmd.exe”>>C:\temp.vbs
@echo WshShell.Sleep 200>>C:\temp.vbs
@echo WshShell.SendKeys”C:”>>C:\temp.vbs
@echo WshShell.SendKeys”{ENTER}”>>C:\temp.vbs
@echo WshShell.SendKeys”cd C:\Xilinx\Vivado\2015.4\bin\”>>C:\temp.vbs
@echo WshShell.SendKeys”{ENTER}”>>C:\temp.vbs
@echo WshShell.SendKeys”Vivado.bat -mode tcl”>>C:\temp.vbs
@echo WshShell.SendKeys”{ENTER}”>>C:\temp.vbs
@echo WshShell.Sleep 5000>>C:\temp.vbs
@echo WshShell.AppActivate”cmd.exe -vivado.bat -mode tcl ”>>C:\temp.vbs
@echo WshShell.Sleep 200>>C:\temp.vbs
@echo WshShell.SendKeys”Program_flash -f E:\BOOT.bin offset 0 -flash_type qspi_single -cable type xilinx_tcf”>>C:\temp.vbs
@echo WshShell.SendKeys”{ENTER}”>>C:\temp.vbs
@call C:\temp.vbs
通过以上方式,即可实现自动调用其它应用程序的shell并在其中自动执行指令。
若对批处理基本指令不熟悉,可参考另一篇介绍批处理基本指令的文章:编程通用基础知识:常用批处理指令/DOS命令介绍
标签: #bat 执行 #调用vbs脚本 #vbs 调用exe #命令行打开bat文件 #用bat文件打开程序命令