本帖最后由 yyz219 于 2025-3-15 10:14 编辑
完美解决了:
方法1
::去 SID(任意位数的 SID 都适用)- sed.exe -i -E "s/HKEY_USERS\\S-1-5-21[^\\]*\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
复制代码 方法2- ::去 SID(任意位数的 SID 都适用)【S-1-5-21后面由 “数字” 和 “-” 号组成,由此用:[0-9\-]】
- sed -i -E "s/HKEY_USERS\\S-1-5-21[0-9\-]*\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
复制代码 =================================================================
成品.bat
:- :【自动去 sid(拖动)】【转换成的(.reg)是(ANSI 编码)】
- @echo off
- ::=============================================================================================
- ::【双击退出,拖运行】
- if "%~1"=="" exit /b 3
- ::=============================================================================================
- set 注册表文件路径=%~1
- ::=============================================================================================
- ::【检测 “关键字”:HKEY_USERS\S-1-5-21(有跳到:D,无跳到:C)】
- type "%注册表文件路径%"|findstr "HKEY_USERS\S-1-5-21" >nul 2>&1
- if %errorlevel% equ 0 (goto :D) else goto :C
- :C
- echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo. %【留下 10个 空行】%
- echo 不需要替换
- pause>nul
- exit
- :D
- echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo. %【留下 10个 空行】%
- echo 要替换吗?
- pause>nul
- ::=============================================================================================
- ::【转为:ANSI 编码(才不乱码)】
- (type "%注册表文件路径%" &echo.;需有中文)>>"ANSI.#" &move /y "ANSI.#" "%注册表文件路径%">nul
- ::=============================================================================================
- ::去 SID(任意位数的 SID 都适用)【S-1-5-21后面由 “数字” 和 “-” 号组成,由此用:[0-9\-]】
- sed -i -E "s/HKEY_USERS\\S-1-5-21[0-9\-]*\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
- exit
复制代码 ===============================
原来的问题:
sed.exe替换字符,还能够精简吗?谢谢
========================
sed.exe替换字符.bat
这些代码能够使用。但是,觉得行数有一点多,不知道能不能减少?
::【自动去 sid】
@echo off
... ...
::====================================================================
::去 "注册表文件"中的SID(数字和 “.” 的位数 要等于sid的位数 不等于就不会处理)(下面sid-40~48位适用)
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21.................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21..................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21...................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21....................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21.....................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21......................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21.......................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21........................................\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"
exit
====================================================================
这些代码能够使用。但是,觉得行数有一点多,不知道能不能减少?
贴个注册表文件,供测试
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-2765962963-2952424663-14726149-500\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband]
[HKEY_CURRENT_CONFIG\Software\Fonts]
"LogPixels"=dword:00000060 |