在日常Windows使用和开发工作中,重复性操作往往耗费大量时间。利用批处理(.bat)和VBScript(.vbs)编写自动化脚本,可以显著提升效率。本文将分享一组经过实践验证的Windows脚本,涵盖系统快捷操作、右键菜单定制、Java多版本切换、定时关机、服务控制以及开机自启配置,所有脚本均可在Gitee和GitHub上获取。
一键启动多个软件
开发或办公时,常需依次打开QQ、微信等应用。借助如下脚本,双击即可同时启动多个程序:- @echo off
- mode con lines=30 cols=100
- title= 一键启动
- :main
- cls
- color 2e
- echo %time%
- echo.Martin
- color 1f
- echo.-----------------------------------------------------------
- echo Starting QQ...
- start "" "C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"
- echo Starting WeChat...
- start "" "C:\Program Files\Tencent\WeChat\WeChat.exe"
- :end
- echo 执行完成
复制代码 只需将需要启动的软件路径替换为自己的安装目录,即可实现一键启动。
Win11右键菜单切换
Windows 11默认的右键菜单折叠了较多选项,许多用户更习惯Windows 10的经典样式。以下脚本通过注册表操作,实现两种菜单的快速切换:- @echo off
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- if %errorlevel%==0 (
- goto UACPrompt
- ) else ( goto gotAdmin )
- :UACPrompt
- echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
- echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
- "%temp%\getadmin.vbs"
- exit /B
- :gotAdmin
- if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
- @echo off
- echo.
- echo =============================================
- echo 右键菜单类型
- echo 1 (Win10旧版右键菜单)
- echo 2 (Win11新版右键菜单)
- echo =============================================
- :select
- set /p opt=请选择操作:
- if %opt%==1 (
- echo 正在开启Win10旧版右键菜单》》》》》》》》》
- reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
- )
- if %opt%==2 (
- echo 正在恢复Win11新版右键菜单》》》》》》》》》
- reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
- )
- @echo off
- echo *************************************
- echo * *
- echo * 重启任务管理器... *
- echo * *
- echo *************************************
- taskkill /f /im explorer.exe & start explorer.exe
- pause
复制代码 运行后选择选项1即可恢复Win10风格菜单,选择2则切回默认样式,修改后自动重启资源管理器生效。
Java多版本切换
开发中经常需要在JDK 1.8、JDK 17等不同版本间切换。以下脚本通过修改系统环境变量实现:- @echo off
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
- cd /d "%~dp0"
- :init
- set JAVA_HOME8=C:\fastwork\Java\jdk1.8
- set JAVA_HOME17=C:\fastwork\Java\jdk17
- :start
- echo 当前使用的JDK 版本:
- java -version
- echo.
- echo =============================================
- echo jdk版本列表
- echo 1 (1.8)
- echo 2 (17)
- echo =============================================
- :select
- set /p opt=请选择jdk版本:
- if %opt%==1 (
- set TARGET_JAVA_HOME=%JAVA_HOME8%
- )
- if %opt%==2 (
- set TARGET_JAVA_HOME=%JAVA_HOME17%
- )
- echo 当前选择的Java路径:%TARGET_JAVA_HOME%
- wmic ENVIRONMENT where "name='JAVA_HOME'" delete
- wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%TARGET_JAVA_HOME%"
- call RefreshEnv
- echo 请按任意键退出!
- pause>nul
复制代码 注意:修改环境变量后,必须通过Win+R打开新cmd窗口验证java -version;Android Studio中的Terminal需重启AS才能生效。
定时关机与取消
有时需要临时定时关机,以下脚本提供交互式配置:- @echo off
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
- cd /d "%~dp0"
- @echo off
- echo.
- echo =============================================
- echo 定时关机
- echo 0(取消所有定时关机)
- echo 1小时(3600)
- echo 2小时(7200)
- echo 3小时(10800)
- echo 4小时(14400)
- echo 5小时(18000)
- echo 6小时(21600)
- echo 7小时(25200)
- echo 8小时(28800)
- echo 9小时(32400)
- echo 10小时(36000)
- echo =============================================
- :prompt
- :select
- set /p opt=请选择:
- if %opt%==0 (
- set SHUTDOWN_DELAY=0
- )else if %opt%==1 (
- set SHUTDOWN_DELAY=1
- )else if %opt%==2 (
- set SHUTDOWN_DELAY=2
- )else if %opt%==3 (
- set SHUTDOWN_DELAY=3
- )else if %opt%==4 (
- set SHUTDOWN_DELAY=4
- )else if %opt%==5 (
- set SHUTDOWN_DELAY=5
- )else if %opt%==6 (
- set SHUTDOWN_DELAY=6
- )else if %opt%==7 (
- set SHUTDOWN_DELAY=7
- )else if %opt%==8 (
- set SHUTDOWN_DELAY=8
- )else if %opt%==9 (
- set SHUTDOWN_DELAY=9
- )else if %opt%==10 (
- set SHUTDOWN_DELAY=10
- )else (
- echo 输入无效!请输入有效的选择。
- goto prompt
- )
- setlocal enabledelayedexpansion
- if %SHUTDOWN_DELAY%==0 (
- echo 已取消所有自动关机!!!
- Shutdown -a
- )else (
- echo %SHUTDOWN_DELAY%小时后自动关机》》》》》》》》》
- set /a result=%SHUTDOWN_DELAY% * 3600
- Shutdown -s -f -t !result!
- )
- echo 操作已完成!可再次修改设置。
- goto prompt
复制代码 另外,提供两个快速脚本:定时关机_N小时.bat(直接指定秒数,例如Shutdown -s -f -t 10800表示3小时后关机)和定时关机_取消.bat(Shutdown -a)。
控制服务的开启与关闭
某些硬件或软件服务不需要常驻时,可通过脚本手动控制。以某品牌移动硬盘服务TosHddscSvc为例:- @echo off
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- if %errorlevel%==0 (
- goto UACPrompt
- ) else ( goto gotAdmin )
- :UACPrompt
- echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
- echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
- "%temp%\getadmin.vbs"
- exit /B
- :gotAdmin
- if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
- @echo off
- echo.
- echo =============================================
- echo 操作类型
- echo 1 (开启服务)
- echo 2 (关闭服务)
- echo =============================================
- :select
- set /p opt=请选择操作:
- if %opt%==1 (
- echo 开启服务
- net start "TosHddscSvc"
- )
- if %opt%==2 (
- echo 关闭服务
- net stop "TosHddscSvc"
- )
- setlocal enabledelayedexpansion
- echo 执行结束,脚本5秒后自动退出...
- set /a count=5
- :loop
- echo 剩余时间:%count% 秒
- timeout /t 1 >nul
- set /a count-=1
- if %count% gtr 0 (
- goto loop
- ) else (
- echo 脚本退出
- )
- endlocal
- exit
复制代码 将服务名称替换为目标服务即可。
设置开机启动脚本
利用VBScript启动批处理文件,再将VBS快捷方式放入启动文件夹。首先创建xxx.vbs:- set ws=wscript.createobject("wscript.shell")
- ws.run "xxxxxx.bat /start",0
复制代码 将上述VBS文件或其快捷方式放入以下目录:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
(可通过Win+R输入shell:startup快速打开)。
实用案例:Jupyter Notebook开机自启
创建jupyter_startup.vbs:- Dim wsh
- Set wsh = createobject("wscript.Shell")
- wsh.run "cmd /c jupyter notebook --notebook-dir='C:\fastwork\Python\JupyterNotebook' --no-browser", 0, true
- Set wsh = Nothing
复制代码 Redis服务开机自启:
service_redis_startup.vbs:- set ws=wscript.createobject("wscript.shell")
- ws.run "service_start.bat /start",0
复制代码 service_start.bat:- @echo off
- echo redis-server start......
- title redis-server
- set ENV_HOME="C:\fastwork\Redis"
- C:
- color 0a
- cd %ENV_HOME%
- redis-server.exe redis.windows.conf
- exit
复制代码
其他实用工具
项目还提供了两个Java jar包:FileCleaner.jar用于清理Android/Java项目的编译临时目录(如build、classes、target);FileSizeCalculator.jar用于按MB为单位统计目录下所有文件大小,便于定位大文件。使用方式:java -jar xxx.jar。
以上脚本均托管于开源仓库,可直接下载使用。注意:部分脚本需要管理员权限,如遇360、电脑管家等安全软件提醒,请勾选信任允许。 |