VBScript里塞一行WScript.Shell,并输就能把cmd叫出来,并输再喂它一条指令。并输这事儿我三年前第一次试的并输时候,差点把公司服务器搞重启——那会儿手滑写了个shutdown /r,并输幸好没加/f,并输系统愣是并输给了三十秒缓冲,我冷汗都下来了,并输赶紧用shutdown /a给拦了回来。并输
核心就两行代码。并输先创建对象:Set sh = CreateObject("WScript.Shell"),并输然后调用sh.Run "cmd /c 你要输的并输指令", 0, True。第二个参数是并输窗口显示模式,0代表完全隐藏,并输1是并输正常窗口。第三个参数True意味着脚本会等指令跑完才继续往下走,False则直接撒手不管。这参数组合玩明白了,你就能控制cmd是明着干还是暗着搞。
举个例子。你想批量改文件名,手动开cmd敲命令太麻烦。写个vbs,双击就完事:
Set sh = CreateObject("WScript.Shell") sh.Run "cmd /c ren C:\Users\me\*.txt *.bak", 0, True 注意那个/c——执行完指令就关窗口。要是用/k,窗口会留着,适合调试时观察输出。我刚开始老搞混,结果vbs跑完,屏幕上留着一堆黑洞洞的cmd窗口,看着跟黑客入侵似的。
这里有个坑:路径带空格会炸。比如C:\Program Files这种,直接拼进字符串里cmd会懵。解决办法是外层加双引号,但vbs里双引号要转义,写出来就是""C:\Program Files\xxx"",丑得一塌糊涂。我后来干脆用chr(34)拼接,虽然代码难看点,但至少不会半夜被同事打电话问“你把我桌面图标搞哪去了”。
还有权限问题。普通用户权限下,vbs调cmd干不了需要管理员的事。比如你想改系统环境变量,vbs双击跑会直接报错,cmd窗口闪一下就没了。这时候得右键vbs文件,选择“以管理员身份运行”——对,vbs文件也能这么操作,系统会弹UAC确认框。这算是个隐蔽的提权入口,但别拿它干坏事,杀毒软件盯着呢。
我实际用这招最多的场景是定时备份。Windows任务计划程序里设个触发器,到点跑vbs,vbs里用cmd调robocopy,把指定文件夹镜像到NAS。全程无窗口,静默执行。有次服务器重启后计划任务没跑起来,我检查半天,最后发现是vbs里忘了加True参数,脚本自己提前退出了,后面cmd指令根本没执行——这破事让我长记性:Run方法的第三个参数,真不是摆设。
写这玩意儿最爽的时刻,是看着一排排文件在资源管理器里自动改名、移动、压缩,而你只需要双击一个不到1KB的文件。最崩溃的时刻,是cmd里输错一个路径,vbs又没做错误处理,结果批量删了不该删的东西——幸好回收站能救回来一半,另一半就当你交了学费。
最后友情提示:别在vbs里直接跑format或del /s这种高危指令,除非你确定自己在做什么。代码写出来是给人用的,不是给系统添乱的。真出事了,别怪cmd,怪你自己没加if判断。


相关文章




精彩导读
热门资讯
关注我们