首页 电脑 电脑学堂 查看内容

批处理打造自己的工具

2008-4-29 13:24 616 0

摘要: 很久没给大家带来好的东西了。作为批处理区版主,有点失职,先给大家陪个不是了。这篇文章是我在黑手上看到的。其中最出色的地方就是结合了INF文件。这个对我来说是个新概念。!   这个批处理工具有5个功...
关键词: nbsp echo INF Goto install Exit reboot DefaultInstall installservice removeservice

很久没给大家带来好的东西了。作为批处理区版主,有点失职,先给大家陪个不是了。这篇文章是我在黑手上看到的。其中最出色的地方就是结合了INF文件。这个对我来说是个新概念。!   这个批处理工具有5个功能   1.查询快捷方式所指文件路径   2.系统账号重命名功能   3.重新启动   4.安装和卸载系统服务功能   5.查看端口关联进程功能   在这里,功能一利用的是findstr的正则表达式。在批处理实例教学动画里面有,不懂的可以看下。不过个人感觉有点啰嗦。,直接用FOR扩展下就可以得到的东西。为什么要去弄个findstr呢。?   系统账号重命名利用了wmic,这个wmi命令行形式。wmic很强哦。   重新启动和安装卸载服务都是通过echo INF文件来实现的。这是这文章的亮点,不过可惜的是没有把secedit也结合进去。不然就真的淫荡之极了。哈哈。   本来想挑战一下作者的。但是没得时间。呵呵。   源代码如下。 @Echo off If "%1" == "" Goto Help If "%1" == "-help" Goto Help If "%1" == "-reboot" Goto Reboot If "%1" == "-installservice" Goto InstallService If "%1" == "-removeservice" Goto RemoveService If "%1" == "-fport" Goto Fport If "%1" == "-querylnk" Goto QueryLnk If "%1" == "-renname" Goto RenName Goto Exit :QueryLnk If "%~2" == "" Echo 您未输入要查询的快捷方式路径(若路径有空格,请用引号引起来)&&Goto Help If /i "%~x2" NEQ ".lnk" Echo 错误,您输入的不是快捷方式&&Goto Exit Echo. Echo. Echo 您输入的是: Echo %2 Echo. Echo 查到目标文件路径是: type %2|more|findstr "^[a-zA-Z]:\\\\" Goto Exit :Reboot If "%2" == "" Echo 要重新启动请加任意参数(Exp:NP -reboot y)&&Goto Exit Setlocal Cd/d %temp% Echo [version] > reboot.inf Set inf=InstallHinfSection DefaultInstall Echo signature=$chicago$Content$nbsp;>>reboot.inf Echo [defaultinstall] >>reboot.inf Rundll32 setupapi,%inf% 1 %temp%\reboot.inf Del reboot.inf Goto Exit :InstallService Setlocal Cd/d %temp% If "%2"=="" Echo NP -InstallService ServiceName FileName&&Goto Exit If "%3"=="" NP -InstallService ServiceName FileName&&Goto Exit Echo [Version] >install.inf Echo Signature="$WINDOWS NT$" >>install.inf Echo [DefaultInstall.Services] >>install.inf Echo AddService=%2,,My_AddService_Name >>install.inf Echo [My_AddService_Name] >>install.inf Echo DisplayName=%2 >>install.inf Echo Description=%2 >>install.inf Echo ServiceType=0x10 >>install.inf Echo StartType=2 >>install.inf Echo ErrorControl=0 >>install.inf Echo ServiceBinary=%3 >>install.inf Rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %temp%\install.inf Del install.inf Echo 安装完毕,需立即启动,请用Net start命令! Goto Exit :RemoveService Setlocal Cd/d %temp% If "%2"=="" Echo NP -RemoveService ServiceName&&Goto Exit Net start|find "%2" >nul&&net stop %2 Echo [Version] >Remove.inf Echo Signature="$WINDOWS NT$" >>Remove.inf Echo [DefaultInstall.Services] >>Remove.inf Echo DelService=%2 >>Remove.inf Rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %temp%\Remove.inf Del Remove.inf Goto Exit :Fport setlocal enabledelayedexpansion  echo ------------------------------------------------------------------------  echo       进程名称                端口号      ECHO TCP协议:  ::利用netstat命令找出使用TCP协议通信的端口,并将结果分割;  ::将第二个参数(IP加端口)传给%%i,第五个参数(PID号)传给%%j;  for /F "usebackq skip=4 tokens=2,5" %%i in (`"netstat -ano -p TCP"`) do (  call :Assoc %%i TCP %%j  echo       !TCP_Proc_Name!                !TCP_Port!  )  ECHO UDP协议:  for /F "usebackq skip=4 tokens=2,4" %%i in (`"netstat -ano -p UDP"`) do (  call :Assoc %%i UDP %%j  echo       !UDP_Proc_Name!                !UDP_Port!  )  echo 按任意键退出  pause>nul  :Assoc  ::对%1(第一个参数)进行分割,将第二个参数传给%%e。在本程序中,%1即为上面的%%i(形式为:IP:端口号)  for /F "tokens=2 delims=:" %%e in ("%1") do (    set %2_Port=%%e  )  :: 查询PID等于%3(第三个参数)的进程,并将结果传给变量?_Proc_Name,?代表UDP或者TCP;  for /F "skip=2 usebackq delims=, tokens=1" %%a in (`"Tasklist /FI "PID eq %3" /FO CSV"`) do (    ::%%~a表示去掉%%a外面的引号,因为上述命令的结果是用括号括起来的。    set %2_Proc_Name=%%~a  )  Goto Exit :RenName If "%2"=="" Echo 请输入要重命名的名称&&Goto Exit Wmic UserAccount Where Name=’%1’ call Rename %2 Goto Exit :Help Echo ****************************************************************************** Echo **                Small_Tool Echo ** Echo **                Code By NetPatch Echo **    Exp: Echo **    NP -Help        //脚本帮助 Echo **    NP -Reboot        //重新启动 Echo **    NP -InstallService    //安装服务 Echo **    NP -RemoveService    //删除服务 Echo **    NP -Fport        //端口关联的进程 Echo **    NP -QueryLnk        //查询快捷方式所指文件路径 Echo **    NP -RenName        //系统帐号重命名 Echo ** Echo **    注意:命令请全部用小写形式! Echo ******************************************************************************* CMD /K :Exit 
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部