重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
VB中Shell执行CMD命令使用如下代码
成都创新互联从2013年创立,先为内黄等服务建站,内黄等地企业,进行企业商务咨询服务。为内黄企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
Shell "cmd.exe /c 你要执行的命令"
其中要执行的命令中需要注意空格问题 如果一个参数中有空格就需要使用双引号引起来,双引号在VB字符串中使用两个双引号("")表示。
例如:
Shell "cmd.exe /c copy ""d:\ab c.txt"" ""d:\a bc.txt"""
Shell 函数
执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。
语法
Shell(pathname[,windowstyle])
Shell 函数的语法含有下面这些命名参数:
部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
windowstyle 命名参数有以下这些值:
常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。
说明
如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。
注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
shell "cmd /c dir c:\*.*",1
msgbox("执行完毕")
另外CMD窗口是无法隐藏执行的,当然,你可以换另外一个思路,就是启用一个新线程,然后将线程后台执行CMD语句,这样前台就看不到CMD窗口了
请参考下面的示例
shell "cmd /c dir",1'/c表示执行完即关闭窗口
shell "cmd /k dir",1'/k表示执行完停留
shell "cmd /c dir pause",1'多条语句可用连接
关于cmd的具体用法可以在命令提示符下敲入cmd/?看看
太多了,只列举一些典型的:
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] string]
/C 执行字符串指定的命令然后终断
/K 执行字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回应
/D 从注册表中停用执行 AutoRun 命令(见下)
/A 使向内部管道或文件命令的输出成为 ANSI
/U 使向内部管道或文件命令的输出成为 Unicode
/T:fg 设置前景/背景颜色(详细信息,请见 COLOR /?)
/E:ON 启用命令扩展(见下)
/E:OFF 停用命令扩展(见下)
/F:ON 启用文件和目录名称完成字符 (见下)
/F:OFF 停用文件和目录名称完成字符(见下)
/V:ON 将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会
允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法
在输入时扩展变量,这与在一个 FOR 循环内不同。
/V:OFF 停用延缓的环境扩展。
VB.NET 里面会有一个main方法表示函数的入口
main方法的参数就是命令行传给它的
shutdown.exe能直接调用是因为你的环境变量有C盘的windows目录
你只要在你程序的输出目录(一般为bin)里面打开命令行输入程序名称.exe就可以直接执行你的窗体
如果你要调试输入命令的效果,你打开你项目的属性,找到调试里面的命令行参数,在里面输入测试参数就能在你main函数里面看到结果了
那如果你想打开任何命令行都可以执行你的窗体程序,那你把你程序的安装目录设置为环境变量,这样就可以直接执行这个命令了
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim b As Boolean = My.Computer.Network.Ping("192.168.1.1", 1000) '返回ping结果,true表示通,false表示不通,1000表示1000毫秒内返回结果
My.Computer.FileSystem.WriteAllText("c:\1.txt", b.ToString vbCrLf, True) '写入到c盘的1.txt文件中并自动加换行回车符
End Sub
调用c:\1.bat,可以这样:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Shell("cmd.exe /c call c:\1.bat", AppWinStyle.NormalFocus)
End Sub