这篇文章说的都是经常用到的bat脚本编写小技巧,比如获取管理员权限、注册表操作、进程操作、服务操作等
自动输入y
1
| echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams
|
bat脚本获取管理员权限
在bat脚本最上面添加一行
1 2 3
| @echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"
|
输出控制台不换行
服务操作
windows服务操作命令有sc和net 两个命令;
1 2 3 4 5 6 7
| sc stop serviceName sc start serviceName sc config AcronisActiveProtectionService start= disabled sc create npc start=auto binPath="C:\1\npc\npc.exe -server=note.iuxt.top:10000 -vkey=ibtbrp5e3uc9lonq -type=tcp" DisplayName="npc内网穿透服务"
net stop serviceName net start serviceName
|
虽然2个都能达到停止服务和启动服务的效果,但是在重启服务时,就是使用批处理先stop后start来实现重启时,如果服务处于启动状态使用sc的stop后start,结果服务不能启动,因为sc命令在执行stop后不会等待,而是继续执行批处理下面的语句,这时服务正在处于停止操作状态,所以start命令不能启动。net命令在stop时会停止等待,在服务完全停止后再继续执行批处理后面的语句,所以net的重启命令就会正常。
进程操作
删除注册表
1 2 3
| reg delete "HKCU\Software\Microsoft\NetLicense" /f
reg add "HKLM\SOFTWARE\Classes\.xdts" /f /ve /d "Xmanager.session" >NUL 2>NUL
|
删除目录
1 2
| rd/s/q "%ProgramData%\FLEXnet" 2>NUL rmdir/s/q "%CommonProgramFiles%\Macrovision Shared"2>NUL
|
rd就是rmdir
判断有没有目录
1
| if not exist "%ProgramData%\NetSarang Computer" md "%ProgramData%\NetSarang Computer"
|
复制文件
1
| echo f|xcopy /e/i/c/y "Data\NetSarang Computer" "%ProgramData%\NetSarang Computer"
|
带空格路径的处理
用””引起来,不方便用””的可以用下面的短名称,或者用变量的形式表示
1
| start C:\Progra~1\Notepad++\notepad++.exe C:\Windows\System32\drivers\etc\hosts
|
将字符串复制到剪切板
1
| echo|set /p="Test" | clip
|
设置环境变量
1 2
| :: /M 增加系统环境变量 setx /M MySQL_HOME "C:\mysql"
|