本帖最后由 yyz219 于 2025-3-15 10:14 编辑
完美解决了:
方法1
::去 SID(任意位数的 SID 都适用)sed.exe -i -E "s/HKEY_USERS\\S-1-5-21[^\\]*\\/HKEY_CURRENT_USER\\/g" "%注册表文件路径%"COPY 方法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" "%注册表文件路径%"COPY |
=================================================================
成品.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" "%注册表文件路径%" | | exitCOPY |
===============================
原来的问题:
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 |