标题: [文本处理] 【已解决】求修改bat文件,改为拖放到bat的快捷方式图标,实现替换.reg的内容,谢谢 [打印本页]
作者: yyz219 时间: 2021-12-20 15:52 标题: 【已解决】求修改bat文件,改为拖放到bat的快捷方式图标,实现替换.reg的内容,谢谢
本帖最后由 yyz219 于 2021-12-27 09:02 编辑
- reg拖到这里去数字串sid++(完美,支持多文件拖放).bat
- +++++++++++++++++++++++++++++++++
- ::【注意:转换成的.reg是 UNICODE 编码】
- @echo off
- ::【检测“关键字”:Windows Registry Editor Version 5.00】
- findstr ""Windows Registry Editor Version 5.00"" %1 >nul 2>&1
-
- if errorlevel 1 goto B
- if errorlevel 0 goto A
-
- :A
- cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo ANSI 编码【不可转换】
- pause>nul
- exit
- :B
-
- ::【将文件转换成:ANSI编码(方便检测有无“关键字”)】
- CHCP 65001
- CMD /D /U /C TYPE %~1 > %~dpn1_unicode-without-BOM.txt
- ECHO.//4=>U.bom
- certutil -decode -f U.bom U.bom >NUL
- CHCP 936
- MOVE /y U.bom %~dpn1_Unicode-BOM.txt >NUL
- TYPE %~dpn1_unicode-without-BOM.txt >> %~dpn1_Unicode-BOM.txt
- TYPE %~dpn1_Unicode-BOM.txt > %~dpn1_ANSI.txt
- DEL /Q /F %~dpn1_unicode-without-BOM.txt %~dpn1_Unicode-BOM.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
- if errorlevel 0 goto 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
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo 不要关闭,需要几秒钟
-
- ::【下面是替换【拖进来】的.reg文件】
- cd /d "%~dp0"
- for %%A in (%*) do (
- powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
- )
-
- ::【下面为了 支持多个.reg转码 做准备】
- :TOP
- set pa=%cd%
- IF (%1) == () GOTO END
- xcopy /s /i "%1" "z:/无效的路径/""
- SHIFT
- GOTO TOP
- :END
- ECHO Done!
-
- ::【将UTF-8码 转为 UNICODE码】
- cd /d "%~dp0"
- call :CreatVBS
- for /f "delims=" %%a in ('dir /a-d/b *.reg') do (
- ANSI2UNICODE.vbs "%%~a" "TEXT.ansi"
- move /y "TEXT.ansi" "%%~a"
- )
- del /f /q ANSI2UNICODE.vbs
- exit
-
- :ToMe
- set "S=.:ailnhpst/fPdv"
- start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
- exit
-
- :CreatVBS
- (echo aCode = "UTF-8"
- echo bCode = "UNICODE"
- echo Set objArgs = WScript.Arguments
- echo.
- echo FileUrlSrc = objArgs^(0^)
- echo FileUrlDst = objArgs^(1^)
- echo Call WriteToFile^(FileUrlDst, ReadFile^(FileUrlSrc, aCode^), bCode^)
- echo.
- echo Function ReadFile^(FileUrlSrc, CharSet^)
- echo Dim Str
- echo Set stm = CreateObject^("Adodb.Stream"^)
- echo stm.Type = 2
- echo stm.mode = 3
- echo stm.charset = CharSet
- echo stm.Open
- echo stm.loadfromfile FileUrlSrc
- echo Str = stm.readtext
- echo stm.Close
- echo Set stm = Nothing
- echo ReadFile = Str
- echo End Function
- echo.
- echo Function WriteToFile ^(FileUrlDst, Str, CharSet^)
- echo Set stm = CreateObject^("Adodb.Stream"^)
- echo stm.Type = 2
- echo stm.mode = 3
- echo stm.charset = CharSet
- echo stm.Open
- echo stm.WriteText Str
- echo stm.SaveToFile FileUrlDst, 2
- echo stm.flush
- echo stm.Close
- echo Set stm = Nothing
- echo End Function)>ANSI2UNICODE.vbs
- goto :eof
- ++++++++++++++++++++++++++++++++++
- reg去数字串sid.bat(运行就替换本目录下全部.reg)
- ::【注意:转换成的.reg是 UNICODE 编码】
- @echo off
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo 要将本目录的reg里面的sid去除吗?
- pause>nul
- cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo 不要关闭,需要几秒钟
- cd /d "%~dp0"
- for /f "delims=" %%A in ('dir /a-d /b *.reg') do (
- powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
- )
-
- ::【将UTF-8码 转为 UNICODE码】
- cd /d "%~dp0"
-
- call :CreatVBS
-
- for /f "delims=" %%a in ('dir /a-d/b *.reg') do (
- ANSI2UNICODE.vbs "%%~a" "TEXT.ansi"
- move /y "TEXT.ansi" "%%~a"
- )
- del /f /q ANSI2UNICODE.vbs
- exit
- call :ToMe
- exit
-
- :ToMe
- set "S=.:ailnhpst/fPdv"
- start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
- exit
- exit
-
- :CreatVBS
- (echo aCode = "UTF-8"
- echo bCode = "UNICODE"
- echo Set objArgs = WScript.Arguments
- echo.
- echo FileUrlSrc = objArgs^(0^)
- echo FileUrlDst = objArgs^(1^)
- echo Call WriteToFile^(FileUrlDst, ReadFile^(FileUrlSrc, aCode^), bCode^)
- echo.
- echo Function ReadFile^(FileUrlSrc, CharSet^)
- echo Dim Str
- echo Set stm = CreateObject^("Adodb.Stream"^)
- echo stm.Type = 2
- echo stm.mode = 3
- echo stm.charset = CharSet
- echo stm.Open
- echo stm.loadfromfile FileUrlSrc
- echo Str = stm.readtext
- echo stm.Close
- echo Set stm = Nothing
- echo ReadFile = Str
- echo End Function
- echo.
- echo Function WriteToFile ^(FileUrlDst, Str, CharSet^)
- echo Set stm = CreateObject^("Adodb.Stream"^)
- echo stm.Type = 2
- echo stm.mode = 3
- echo stm.charset = CharSet
- echo stm.Open
- echo stm.WriteText Str
- echo stm.SaveToFile FileUrlDst, 2
- echo stm.flush
- echo stm.Close
- echo Set stm = Nothing
- echo End Function)>ANSI2UNICODE.vbs
- goto :eof
复制代码
作者: yyz219 时间: 2021-12-21 14:28
求不改变.reg的编码【或者保存为:ANSI码】?
【因为改变了编码(两个都帮我修改一下),导致不能够直接使用】
作者: yyz219 时间: 2021-12-23 12:49
本帖最后由 yyz219 于 2021-12-23 21:41 编辑
reg拖到这里去数字串sid++(支持多文件拖动).bat
************************
::【注意:转换成的.reg是 UNICODE 编码】
@echo off
::【检测“关键字”:Windows Registry Editor Version 5.00】
findstr ""Windows Registry Editor Version 5.00"" %1 >nul 2>&1
if errorlevel 1 goto B
if errorlevel 0 goto A
:A
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo ANSI 编码【不可转换】
pause>nul
exit
:B
::【将文件转换成:ANSI编码(方便检测有无“关键字”)】
CHCP 65001
CMD /D /U /C TYPE %~1 > %~dpn1_unicode-without-BOM.txt
ECHO.//4=>U.bom
certutil -decode -f U.bom U.bom >NUL
CHCP 936
MOVE /y U.bom %~dpn1_Unicode-BOM.txt >NUL
TYPE %~dpn1_unicode-without-BOM.txt >> %~dpn1_Unicode-BOM.txt
TYPE %~dpn1_Unicode-BOM.txt > %~dpn1_ANSI.txt
DEL /Q /F %~dpn1_unicode-without-BOM.txt %~dpn1_Unicode-BOM.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
if errorlevel 0 goto 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
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
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo 不要关闭,需要几秒钟
::【下面是替换【拖进来】的.reg文件】
cd /d "%~dp0"
for %%A in (%*) do (
powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
)
::【下面为了 支持多个.reg转码 做准备】
:TOP
set pa=%cd%
IF (%1) == () GOTO END
xcopy /s /i "%1" ""%cd%""
SHIFT
GOTO TOP
:END
ECHO Done!
::【将UTF-8码 转为 UNICODE码】
cd /d "%~dp0"
call :CreatVBS
for /f "delims=" %%a in ('dir /a-d/b *.reg') do (
ANSI2UNICODE.vbs "%%~a" "TEXT.ansi"
move /y "TEXT.ansi" "%%~a"
)
del /f /q ANSI2UNICODE.vbs
exit
:ToMe
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit
:CreatVBS
(echo aCode = "UTF-8"
echo bCode = "UNICODE"
echo Set objArgs = WScript.Arguments
echo.
echo FileUrlSrc = objArgs^(0^)
echo FileUrlDst = objArgs^(1^)
echo Call WriteToFile^(FileUrlDst, ReadFile^(FileUrlSrc, aCode^), bCode^)
echo.
echo Function ReadFile^(FileUrlSrc, CharSet^)
echo Dim Str
echo Set stm = CreateObject^("Adodb.Stream"^)
echo stm.Type = 2
echo stm.mode = 3
echo stm.charset = CharSet
echo stm.Open
echo stm.loadfromfile FileUrlSrc
echo Str = stm.readtext
echo stm.Close
echo Set stm = Nothing
echo ReadFile = Str
echo End Function
echo.
echo Function WriteToFile ^(FileUrlDst, Str, CharSet^)
echo Set stm = CreateObject^("Adodb.Stream"^)
echo stm.Type = 2
echo stm.mode = 3
echo stm.charset = CharSet
echo stm.Open
echo stm.WriteText Str
echo stm.SaveToFile FileUrlDst, 2
echo stm.flush
echo stm.Close
echo Set stm = Nothing
echo End Function)>ANSI2UNICODE.vbs
goto :eof
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |