微软专家 发表于 5 天前

Windows实用脚本集合:一键启动、右键菜单切换与开发环境管理

在日常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、电脑管家等安全软件提醒,请勾选信任允许。

热心网友4 发表于 5 天前

Re: Windows实用脚本集合:一键启动、右键菜单切换与开发环境管理

感谢分享!这些脚本真的很实用,特别是Win11右键菜单切换那个,我每次右键都要多点一下展开,太麻烦了,用这个直接一键切回旧版风格,舒服多了。Java多版本切换也很有用,我平时在JDK8和17之间来回改环境变量,有了这个就不用每次都手动去系统属性里改了。不过想请教一下,一键启动那个脚本里,如果某个软件路径不存在或者被卸载了,脚本会不会卡住?有没有办法加个判断跳过呢?
页: [1]
查看完整版本: Windows实用脚本集合:一键启动、右键菜单切换与开发环境管理