批处理(Batch),也称为批处理脚本.
虽然自己在之前的项目中,自己写过一个开机延时运行某个脚本的功能,但那时没有系统的学习过,只是网络搜索解决方案,然后copy,整理,完成目的就没再去深入学习了。
现在,新工作中似乎需要我经常进行脚本的编程,所以这里要系统地学习记录一下了。
学习方式依然是从实际应用出发,所以先复习下之前写的脚本程序:
@echo off
start "C:\Widnows\System32\cmd.exe"
ping 127.0.0.1 -n 10 >nul
d:
cd nginx
nginx.exe
taskkill /f /im cmd.exe
exit
这个脚本写的很简单,没记错的话,这个脚本是不够完美的(cmd.exe窗口关闭失败),还有一个完美一点的版本,现在不在手上,就不贴了。
上面的代码,用到的知识点有,主要有:@echo off ;
详细解析可看:https://www.cnblogs.com/iTlijun/p/6137027.html
好,现在我先把这现在面对的脚本进行一下解析:
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
pnputil /add-driver driver\PGRUsb\*.inf /install
pnputil /add-driver driver\PGRUsb3\*.inf /install
解析:
::%*是表示命令行传过来的参数,%1表示第一个参数
:://很多时候我们需要管理员权限来运行bat那么就需要结合vbscript来实现了
::下面是获取管理员权限的常用方式:与命令
::mshta vbscript:调用vbs脚本语言来执行
::%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
::cd /d "%~dp0"
::下面可以写你的bat代码了
::微软系统中默认提供的一些exe指令工具,在C:\Windows\System32目录下可以找到
::介绍链接:https://www.jianshu.com/p/c56588094dba
::其中pnputil 用来从 C:\Windows\System32\DriverStore\FileRepository 中删除驱动和预安装驱动
REM Microsoft PnP 工具
REM 用法:
REM ------
REM pnputil.exe [-f | -i] [ -? | -a | -d | -e ] <INF 名称>
REM 示例:
REM pnputil.exe -a a:\usbcam\USBCAM.INF -> 添加 USBCAM.INF 指定的程序包
REM pnputil.exe -a c:\drivers\*.inf -> 添加 c:\drivers\ 中的所有程序包\
REM pnputil.exe -i -a a:\usbcam\USBCAM.INF -> 添加和安装驱动程序包
REM pnputil.exe -e -> 枚举所有第三方程序包
REM pnputil.exe -d oem0.inf -> 删除程序包 oem0.inf
REM pnputil.exe -f -d oem0.inf -> 强制删除程序包 oem0.inf
REM pnputil.exe -? -> 此用法屏幕
::(REM相当于::)
:: 上面代码:pnputil /add-driver driver\PGRUsb\*.inf /install
:: 相当于 pnputil -a driver\PGRUsb\*.inf -i
好,现在看动了吧,在脚本程序里,经常会使用到一个系统的API工具
像第一个例子的:taskkill,和第二个例子的:pnputil。在看脚本时,如果遇到不认识的指令,那么它们很可能是系统提供的API,所以面对它们,百度查一下就好了
补上一些参考链接,获取管理员权限的常用方法:https://www.jb51.net/article/67623.htm