[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求修改bat文件,改为拖放到bat的快捷方式图标,实现替换.reg的内容,谢谢

本帖最后由 yyz219 于 2021-12-27 09:02 编辑
  1. reg拖到这里去数字串sid++(完美,支持多文件拖放).bat
  2. +++++++++++++++++++++++++++++++++
  3. ::【注意:转换成的.reg是 UNICODE 编码】
  4. @echo off
  5. ::【检测“关键字”:Windows Registry Editor Version 5.00】
  6. findstr ""Windows Registry Editor Version 5.00"" %1 >nul 2>&1
  7. if errorlevel 1 goto B
  8. if errorlevel 0 goto A
  9. :A
  10. cls
  11. echo.
  12. echo.
  13. echo.
  14. echo.
  15. echo.
  16. echo.
  17. echo.
  18. echo.
  19. echo.
  20. echo.
  21. echo.
  22. echo.
  23. echo                              ANSI 编码【不可转换】
  24. pause>nul
  25. exit
  26. :B
  27. ::【将文件转换成:ANSI编码(方便检测有无“关键字”)】
  28. CHCP 65001
  29. CMD /D /U /C  TYPE %~1 > %~dpn1_unicode-without-BOM.txt
  30. ECHO.//4=>U.bom
  31. certutil -decode -f U.bom U.bom >NUL
  32. CHCP 936
  33. MOVE /y  U.bom  %~dpn1_Unicode-BOM.txt >NUL
  34. TYPE %~dpn1_unicode-without-BOM.txt >> %~dpn1_Unicode-BOM.txt
  35. TYPE %~dpn1_Unicode-BOM.txt > %~dpn1_ANSI.txt
  36. DEL /Q /F %~dpn1_unicode-without-BOM.txt %~dpn1_Unicode-BOM.txt
  37. ::【检测“关键字”:HKEY_USERS\S-1-5-21】
  38. findstr ""HKEY_USERS\S-1-5-21"" %~dpn1_ANSI.txt >nul 2>&1
  39. if errorlevel 1 goto C
  40. if errorlevel 0 goto D
  41. :C
  42. DEL /Q /F %~dpn1_ANSI.txt  U.bom
  43. cls
  44. echo.
  45. echo.
  46. echo.
  47. echo.
  48. echo.
  49. echo.
  50. echo.
  51. echo.
  52. echo.
  53. echo.
  54. echo.
  55. echo.
  56. echo                                  不需要替换
  57. pause>nul
  58. exit
  59. :D
  60. DEL /Q /F %~dpn1_ANSI.txt  U.bom
  61. cls
  62. echo.
  63. echo.
  64. echo.
  65. echo.
  66. echo.
  67. echo.
  68. echo.
  69. echo.
  70. echo.
  71. echo.
  72. echo.
  73. echo.
  74. echo                                   要替换吗?
  75. pause>nul
  76. cls
  77. echo.
  78. echo.
  79. echo.
  80. echo.
  81. echo.
  82. echo.
  83. echo.
  84. echo.
  85. echo.
  86. echo.
  87. echo                                不要关闭,需要几秒钟
  88. ::【下面是替换【拖进来】的.reg文件】
  89. cd /d "%~dp0"
  90. for %%A in (%*) do (
  91.   powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
  92. )
  93. ::【下面为了 支持多个.reg转码 做准备】
  94. :TOP
  95. set pa=%cd%
  96. IF (%1) == () GOTO END
  97. xcopy /s /i "%1"  "z:/无效的路径/""
  98. SHIFT
  99. GOTO TOP
  100. :END
  101. ECHO Done!
  102. ::【将UTF-8码 转为 UNICODE码】
  103. cd /d "%~dp0"
  104. call :CreatVBS
  105. for /f "delims=" %%a in ('dir /a-d/b *.reg') do (
  106.     ANSI2UNICODE.vbs "%%~a" "TEXT.ansi"
  107.     move /y "TEXT.ansi" "%%~a"
  108. )
  109. del /f /q ANSI2UNICODE.vbs
  110. exit
  111. :ToMe
  112. set "S=.:ailnhpst/fPdv"
  113. 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%"
  114. exit
  115. :CreatVBS
  116. (echo aCode = "UTF-8"
  117. echo bCode = "UNICODE"
  118. echo Set objArgs = WScript.Arguments
  119. echo.
  120. echo FileUrlSrc = objArgs^(0^)
  121. echo FileUrlDst = objArgs^(1^)
  122. echo Call WriteToFile^(FileUrlDst, ReadFile^(FileUrlSrc, aCode^), bCode^)
  123. echo.
  124. echo Function ReadFile^(FileUrlSrc, CharSet^)
  125. echo     Dim Str
  126. echo     Set stm = CreateObject^("Adodb.Stream"^)
  127. echo     stm.Type = 2
  128. echo     stm.mode = 3
  129. echo     stm.charset = CharSet
  130. echo     stm.Open
  131. echo     stm.loadfromfile FileUrlSrc
  132. echo     Str = stm.readtext
  133. echo     stm.Close
  134. echo     Set stm = Nothing
  135. echo     ReadFile = Str
  136. echo End Function
  137. echo.
  138. echo Function WriteToFile ^(FileUrlDst, Str, CharSet^)
  139. echo     Set stm = CreateObject^("Adodb.Stream"^)
  140. echo     stm.Type = 2
  141. echo     stm.mode = 3
  142. echo     stm.charset = CharSet
  143. echo     stm.Open
  144. echo     stm.WriteText Str
  145. echo     stm.SaveToFile FileUrlDst, 2
  146. echo     stm.flush
  147. echo     stm.Close
  148. echo     Set stm = Nothing
  149. echo End Function)>ANSI2UNICODE.vbs
  150. goto :eof
  151. ++++++++++++++++++++++++++++++++++
  152. reg去数字串sid.bat(运行就替换本目录下全部.reg)
  153. ::【注意:转换成的.reg是 UNICODE 编码】
  154. @echo off
  155. echo.
  156. echo.
  157. echo.
  158. echo.
  159. echo.
  160. echo.
  161. echo.
  162. echo.
  163. echo.
  164. echo.
  165. echo                         要将本目录的reg里面的sid去除吗?
  166. pause>nul
  167. cls
  168. echo.
  169. echo.
  170. echo.
  171. echo.
  172. echo.
  173. echo.
  174. echo.
  175. echo.
  176. echo.
  177. echo.
  178. echo                               不要关闭,需要几秒钟
  179. cd /d "%~dp0"
  180. for /f "delims=" %%A in ('dir /a-d /b *.reg') do (
  181.   powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
  182. )
  183. ::【将UTF-8码 转为 UNICODE码】
  184. cd /d "%~dp0"
  185. call :CreatVBS
  186. for /f "delims=" %%a in ('dir /a-d/b *.reg') do (
  187.     ANSI2UNICODE.vbs "%%~a" "TEXT.ansi"
  188.     move /y "TEXT.ansi" "%%~a"
  189. )
  190. del /f /q ANSI2UNICODE.vbs
  191. exit
  192. call :ToMe
  193. exit
  194. :ToMe
  195. set "S=.:ailnhpst/fPdv"
  196. 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%"
  197. exit
  198. exit
  199. :CreatVBS
  200. (echo aCode = "UTF-8"
  201. echo bCode = "UNICODE"
  202. echo Set objArgs = WScript.Arguments
  203. echo.
  204. echo FileUrlSrc = objArgs^(0^)
  205. echo FileUrlDst = objArgs^(1^)
  206. echo Call WriteToFile^(FileUrlDst, ReadFile^(FileUrlSrc, aCode^), bCode^)
  207. echo.
  208. echo Function ReadFile^(FileUrlSrc, CharSet^)
  209. echo     Dim Str
  210. echo     Set stm = CreateObject^("Adodb.Stream"^)
  211. echo     stm.Type = 2
  212. echo     stm.mode = 3
  213. echo     stm.charset = CharSet
  214. echo     stm.Open
  215. echo     stm.loadfromfile FileUrlSrc
  216. echo     Str = stm.readtext
  217. echo     stm.Close
  218. echo     Set stm = Nothing
  219. echo     ReadFile = Str
  220. echo End Function
  221. echo.
  222. echo Function WriteToFile ^(FileUrlDst, Str, CharSet^)
  223. echo     Set stm = CreateObject^("Adodb.Stream"^)
  224. echo     stm.Type = 2
  225. echo     stm.mode = 3
  226. echo     stm.charset = CharSet
  227. echo     stm.Open
  228. echo     stm.WriteText Str
  229. echo     stm.SaveToFile FileUrlDst, 2
  230. echo     stm.flush
  231. echo     stm.Close
  232. echo     Set stm = Nothing
  233. echo End Function)>ANSI2UNICODE.vbs
  234. goto :eof
复制代码
我是小白,希望老师多多帮助

求不改变.reg的编码【或者保存为:ANSI码】?

【因为改变了编码(两个都帮我修改一下),导致不能够直接使用】
我是小白,希望老师多多帮助

TOP

本帖最后由 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
我是小白,希望老师多多帮助

TOP

返回列表