本帖最后由 yyz219 于 2022-6-18 08:55 编辑
完美解决了:- ::【自动去 sid(拖动)】【转换成的(.reg)是(ANSI 编码)】
-
- @echo off
- ::【将文件转换成(ANSI编码)————方便检测有无(关键字)】【只有(ANSI编码),才能检测到(正确结果),否则一律显示(无)】
- TYPE %1 > "%~dpn1_ANSI.txt"
-
- ::【检测 “关键字”:HKEY_USERS\S-1-5-21】
- findstr ""HKEY_USERS\S-1-5-21"" "%~dpn1_ANSI.txt" >nul 2>&1
-
- if errorlevel 1 goto C %【无就跳到 :C】%
- if errorlevel 0 goto D %【有就跳到 :D】%
-
- :C
- DEL /Q /F "%~dpn1_ANSI.txt" U.bom
- cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo 不需要替换
- pause>nul
- exit
- :D
- DEL /Q /F "%~dpn1_ANSI.txt" U.bom
- cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo 要替换吗?
- pause>nul
- cls
- ::+++++++++++++++++++++++++++++++++++++++++++++++++
- ::【复制(被拖文件)到(bat所在目录)】
- xcopy /y %1 "%~dp0"
- cd /d "%~dp0"
- ::将reg文件转换为文本
- ren *.reg 888.txt
- ::将 文本888.txt转为 ANSI编码
- type 888.txt>999.txt
- ::去 999.txt中的SID(数字和 “.” 的位数 要等于sid的位数 不等于就不会处理)
- sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21.....................................\\/HKEY_CURRENT_USER\\/g" 999.txt
- sed.exe -i -E -e "s/HKEY_USERS\\S-1-5-21...................................\\/HKEY_CURRENT_USER\\/g" 999.txt
-
- ::将999.txt转换为reg文件
- ren 999.txt "%~n1.reg"
- ::【复制(已经转换的文件)到(被拖目录)覆盖原文件】
- xcopy /s /y "%~dp0*.reg" "%~dp1"
- Del /f /s /q *.reg *.txt
- exit
复制代码 sed.exe下载 http://bcn.bathome.net/tool/4.8/sed.exe |