很久没给大家带来好的东西了。 作为批处理区版主, 有点失职, 先给大家陪个不是了。 这篇文章是我在黑手上看到的。 其中最出色的地方就是结合了INF文件。 这个对我来说是个新概念。 ! 这个批处理工具有5个功能 1.查询快捷方式所指文件路径 2.系统账号重命名功能 3.重新启动 4.安装和卸载系统服务功能 5.查看端口关联进程功能 在这里, 功能一利用的是findstr的正则表达式。 在批处理实例教学动画里面有, 不懂的可以看下。 不过个人感觉有点啰嗦。 , 直接用FOR扩展下就可以得到的东西。 为什么要去弄个findstr呢。 ? 系统账号重命名利用了wmic, 这个wmi命令行形式。 wmic很强哦。 重新启动和安装卸载服务都是通过echo INF文件来实现的。 这是这文章的亮点, 不过可惜的是没有把secedit也结合进去。 不然就真的淫荡之极了。 哈哈。 本来想挑战一下作者的。 但是没得时间。 呵呵。 源代码如下。 @Echo offIf %1 == Goto HelpIf %1 == -help Goto HelpIf %1 == -reboot Goto RebootIf %1 == -installservice Goto InstallServiceIf %1 == -removeservice Goto RemoveServiceIf %1 == -fport Goto FportIf %1 == -querylnk Goto QueryLnkIf %1 == -renname Goto RenNameGoto Exit:QueryLnkIf %~2 == Echo 您未输入要查询的快捷方式路径(若路径有空格,请用引号引起来)&&Goto HelpIf /i %~x2 NEQ .lnk Echo 错误,您输入的不是快捷方式&&Goto ExitEcho.Echo.Echo 您输入的是:Echo %2Echo.Echo 查到目标文件路径是:type %2 more findstr ^[a-zA-Z]:\\\\Goto Exit:RebootIf %2 == Echo 要重新启动请加任意参数(Exp:NP -reboot y)&&Goto ExitSetlocalCd/d %temp%Echo [version] > reboot.infSet inf=InstallHinfSection DefaultInstallEcho signature=$chicago$ >>reboot.infEcho [defaultinstall] >>reboot.infRundll32 setupapi,%inf% 1 %temp%\reboot.infDel reboot.infGoto Exit:InstallServiceSetlocalCd/d %temp%If %2== Echo NP -InstallService ServiceName FileName&&Goto ExitIf %3== NP -InstallService ServiceName FileName&&Goto ExitEcho [Version] >install.infEcho Signature=$WINDOWS NT$ >>install.infEcho [DefaultInstall.Services] >>install.infEcho AddService=%2,,My_AddService_Name >>install.infEcho [My_AddService_Name] >>install.infEcho DisplayName=%2 >>install.infEcho Description=%2 >>install.infEcho ServiceType=0x10 >>install.infEcho StartType=2 >>install.infEcho ErrorControl=0 >>install.infEcho ServiceBinary=%3 >>install.infRundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %temp%\install.infDel install.infEcho 安装完毕, 需立即启动, 请用Net start命令!Goto Exit:RemoveServiceSetlocalCd/d %temp%If %2== Echo NP -RemoveService ServiceName&&Goto ExitNet start find %2 >nul&&net stop %2Echo [Version] >Remove.infEcho Signature=$WINDOWS NT$ >>Remove.infEcho [DefaultInstall.Services] >>Remove.infEcho DelService=%2 >>Remove.infRundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %temp%\Remove.infDel Remove.infGoto Exit:Fportsetlocal 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:RenNameIf %2== Echo 请输入要重命名的名称&&Goto ExitWmic UserAccount Where Name=%1 call Rename %2Goto Exit:HelpEcho ******************************************************************************Echo ** Small_ToolEcho **Echo ** Code By NetPatchEcho ** 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
……