vb截取控制台回显的信息DOS窗口错误信息

在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序。截获一个shell程序的输出是很有用的,比如说您可以自己编写一个IDE(集成开发环境),当用户发出编译指令时候,你可以在后台启动shell 调用编译器并截获它们的输出,对这些输出信息进行分析后在更为友好的用户界面上显示出来。为了方便起见,我们用VB作为本文的演示语言。
通常,系统启动Shell程序时缺省给定了3个I/O信道,标准输入(stdin), 标准输出stdout, 标准错误输出stderr。之所以这么区分是因为在早期的计算机系统如PDP-11的一些限制。那时没有GUI, 将输出分为stdout,stderr可以避免程序的调试信息和正常输出的信息混杂在一起。
通常, shell程序把它们的输出写入标准输出管道(stdout)、把出错信息写入标准错误管道(stderr)。缺省情况下,系统将管道的输出直接送到屏幕,这样一来我们就能看到应用程序运行结果了。
为了捕获一个标准控制台应用程序的输出,我们必须把standOutput和standError管道输出重定向到我们自定义的管道。
本站代码都经过亲测,运行无误。上面是复制的理论,所以摘下来。

, , , ,

VB读取DOS命令回显

'我只要个简单的功能,比如运行ipconfig能把回显读取到,网上找了没效果,要么就是大篇大篇的调用
'下面这个函数能实现,需要 WScript.Shell 组件(WSHom.ocx)和cmd.exe的支持,如果你禁用了那就没法了
'调用  msgbox dosprint("ipconfig")
Function dosprint(strCommand)
    Dim objShell As Object
    Set objShell = CreateObject("WScript.Shell")
    Set objWshScriptExec = objShell.Exec("c:\windows\system32\cmd.exe /c " & strCommand)
    Set objStdOut = objWshScriptExec.StdOut
    dosprint = objStdOut.ReadAll
    Set objShell = Nothing
End Function

, , , ,

VB控制台程序示例,VB在DOS窗口下运行

有的程序我们不需要窗体的,比如在DOS下运行 md5.exe mypass,我们想在DOS窗口中直接打印中”mypass”的MD5值,那就要用到VB中的Console Windows称为控制台程序,首先我们把VB中的窗体移除,省下资源,然后添个模块,添加 sub main()这个过程,然后在工程属性中,启动项那儿选择submain就可以了,程序会静默运行。 下面的代码演示了,运行时弹出个DOS窗口,让用户输入名字,并把名字显示出来的过程。

, , , ,

asp在线nslookup查询域名DNS地址

原理主要是用WScript.Shell 调用 nslookup命令,然后将回显输出来
其实最好的办法还是做DLL组件再到服务器上注册。
目前我们用cmd方式得到的数据很直接也简单,只是后期格式化要麻烦点。
如果你不能运行下面的asp代码,注意检查iis是脚本权限是否勾了可执行,再把iis用户加入管理员组。

1
2
3
4
5
6
7
8
9
function nslookup(t,d,n)
	't 类型		d 域名		n 服务器
	Set objWShell=CreateObject("WScript.Shell")
	cmdline = "nslookup.exe -timeout=10 -qt=" & t & " " & d & " " & n
	Set objCmd=objWShell.Exec(cmdline)
	nslookup=objCmd.StdOut.Readall()
	set objCmd = nothing
	set objWShell=nothing
end function

注意看nslookup后面的参数,第一个是超时时间10秒,第二个是查询类型,第三个是域名地址,第四个是指定服务器(可选项)。
下面是支持的查询类型:

, , , ,

删除任意文件,删除顽固文件

我电脑F盘有个Ghost.. 文件夹,想尽办法都删不掉,无意思中看到这个脚本,一试果然有效,估计其他难删的也是轻而易举了,比如有时候虚拟主机中毒了也是建些删不掉的文件夹。
使用方法是将以下两行代码另存为A.bat文件,然后将要删的文件或文件夹拖到此文件图标上。

DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1

, , ,