删除原来的初始化文件

This commit is contained in:
杨永全
2026-01-20 09:24:37 +00:00
parent e4ff45d7e2
commit dea182687a
-150
View File
@@ -1,150 +0,0 @@
@echo off
setlocal
::获取输入程序所在目录(通过注册表中的卸载路径)
:: 注册表路径
set "regKeOFUninstall=HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Weasel"
:: 读取 UninstallString 值
for /f "tokens=2*" %%a in ('reg query "%regKeOFUninstall%" /v "UninstallString" 2^>nul ^| findstr /i "UninstallString"') do (
set "uninstallCmd=%%b"
)
:: 检查是否找到
if not defined uninstallCmd (
echo 错误:未找到小狼毫(Weasel)的注册表项。
pause
exit /b 1
)
::得到卸载程序目录
echo %uninstallCmd%
:: 去掉开头和结尾的引号,得到的目录,首尾有双引号,需要去掉
call set "clean=%%uninstallCmd:"=%%"
:: 提取所在的路径,也就是安装目录
for %%I in ("%clean%") do set "apppath=%%~dpI"
echo 输入法程序安装在%apppath%WeaselDeployer.exe
:: 找到用户文件夹路径,通过注册表中的路径
set "regKeyOfUserDIR=HKCU\SOFTWARE\Rime\Weasel"
:: 读取 RimeUserDir 的值
for /f "tokens=2*" %%a in ('reg query "%regKeyOfUserDIR%" /v "RimeUserDir" 2^>nul ^| findstr /i "RimeUserDir"') do (
set "rimeUserDir=%%b"
)
:: 检查是否成功读取
if not defined rimeUserDir (
echo 错误:未找到 RimeUserDir 注册表项。
pause
exit /b 1
)
echo 注册表读取的Rime用户目录: %rimeUserDir%
:: 去掉开头和结尾的引号,得到的目录,首尾有双引号,需要去掉,去掉后得到的就是用户目录
call set "userpath=%%rimeUserDir:"=%%"
echo 获得的用户目录是:%userpath%
:: 获取当前批处理文件所在目录(结尾带反斜杠)
set "CURRENT_DIR=%~dp0"
:: 构建 autosync.bat 的完整路径,为了后续添加定时任务
set "TARGET_SCRIPT=%CURRENT_DIR%autosync.bat"
set "TARGET_VBS=%CURRENT_DIR%run_hidden.vbs"
set "CMD=wscript.exe //nologo \"%CURRENT_DIR%run_hidden.vbs\" \"%CURRENT_DIR%autosync.bat\""
:: 去掉末尾的反斜杠(便于处理)
if "%CURRENT_DIR:~-1%"=="\" set "CURRENT_DIR=%CURRENT_DIR:~0,-1%"
:: 获取上层目录(父目录)
for %%I in ("%CURRENT_DIR%") do set "PARENT_DIR=%%~dpI"
:: 拼接config
set "configpath=%PARENT_DIR%config"
echo 获得的配置文件目录是:%configpath%
call :link "custom_phrase.txt"
call :link "default.custom.yaml"
call :link "weasel.custom.yaml"
call :link "weasel.yaml"
call :link "default.yaml"
pause
echo 接下来重新部署输入法
if exist "%apppath%\WeaselDeployer.exe" (
"%apppath%WeaselDeployer.exe" /deploy
echo 部署功能应该已经启动,确定后按任意键退出.
pause
) else (
echo 没有找到可执行程序,请检查目录后重试
pause
exit /b 1
)
:: 接下来设置定时任务
echo 目标bat文件路径%TARGET_SCRIPT%
:: 检查 autosync.bat 是否存在
if not exist "%TARGET_SCRIPT%" (
echo 错误:未找到 %TARGET_SCRIPT%
pause
exit /b 1
)
echo 目标vbs文件路径%TARGET_VBS%
:: 检查 autosync.bat 是否存在
if not exist "%TARGET_VBS%" (
echo 错误:未找到 %TARGET_VBS%
pause
exit /b 1
)
:: 转义路径中的空格和特殊字符(用双引号包裹,并在 schtasks 中用 \" 转义)
set "QUOTED_SCRIPT=\"%TARGET_SCRIPT%\""
:: 任务名称
set "TASK_NAME=RimeAutoSync"
:: 创建每10分钟运行一次的任务(从现在开始,每天重复)
schtasks /create ^
/tn "%TASK_NAME%" ^
/tr "%CMD%" ^
/sc minute ^
/mo 10 ^
/f
if %errorlevel% equ 0 (
echo.
echo 定时任务创建成功!
echo - 任务名称: %TASK_NAME%
echo - 执行频率: 每 10 分钟检查一次
echo - 实际同步条件: 系统空闲 ≥30 分钟
echo - 脚本路径: %CMD%
echo.
echo 注意:请确保 autosync.bat 与本脚本在同一目录。
) else (
echo 创建失败。建议以管理员身份运行(非必须,但可避免权限问题)。
)
echo 任务创建成功,按任意键退出.
pause
goto :eof
:: ================= 函数定义(用来创建文件软连接) =================
:link
set "filename=%~1"
::设置软连链接
echo 开始处理%filename%
set "TARGET=%configpath%\%filename%"
set "LINK=%userpath%\%filename%"
echo 目标文件是:%TARGET%
echo 软连接文件是:%LINK%
if exist "%TARGET%" (
echo 找到配置文件了%TARGET%
) else (
echo 配置目录下没有%filename%文件,请检查
pause
exit /b 1
)
if exist "%LINK%" (
echo 文件 %LINK% 已经存在,创建软连接前会删除文件,请确保该文件已经备份,然后按回车键继续,否则,请关闭后备份。
set /p "dummy="
del "%LINK%"
) else (
echo 文件 %LINK% 不存在!
)
:: 前面如果用户已经按了回车,说明同意删除原来的文件,现在就可以创建文件软链接了
mklink "%LINK%" "%TARGET%"
goto :eof