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

[文本处理] 【已解决】自动去sid(拖动).bat

本帖最后由 yyz219 于 2022-1-16 08:13 编辑
  1. 完美解决了
  2. 自动去sid(拖动).bat
  3. ::【自动去 sid(拖动)】
  4. ::【转换成的(.reg)是(UNICODE 编码)】
  5. @echo off
  6. ::【检测 “关键字”: Windows Registry Editor Version 5.00】
  7. findstr ""Windows Registry Editor Version 5.00"" %1 >nul 2>&1
  8. if errorlevel 1 goto B   %【无就跳到 :B】%
  9. if errorlevel 0 goto A   %【有就跳到 :A】%
  10. ::【虽然所有(.reg文件),都有(Windows Registry Editor Version 5.00)。 但是,只有(ANSI编码)才能够检测到(有)】
  11. :A
  12. cls
  13. echo.
  14. echo.
  15. echo.
  16. echo.
  17. echo.
  18. echo.
  19. echo.
  20. echo.
  21. echo.
  22. echo.
  23. echo.
  24. echo.
  25. echo                              ANSI 编码【不可转换】
  26. pause>nul
  27. exit
  28. :B
  29. ::【将文件转换成(ANSI编码)————方便检测有无(关键字)】【只有(ANSI编码),才能检测到(正确结果),否则一律显示(无)】
  30. CHCP 65001
  31. CMD /D /U /C  TYPE "%~1" > "%~dpn1_unicode-without-BOM.txt"
  32. ECHO.//4=>U.bom
  33. certutil -decode -f U.bom U.bom >NUL
  34. CHCP 936
  35. MOVE /y  U.bom  "%~dpn1_Unicode-BOM.txt" >NUL
  36. TYPE "%~dpn1_unicode-without-BOM.txt" >> "%~dpn1_Unicode-BOM.txt"
  37. TYPE "%~dpn1_Unicode-BOM.txt" > "%~dpn1_ANSI.txt"
  38. DEL /Q /F "%~dpn1_unicode-without-BOM.txt" "%~dpn1_Unicode-BOM.txt"
  39. ::【检测 “关键字”:HKEY_USERS\S-1-5-21】
  40. findstr ""HKEY_USERS\S-1-5-21"" "%~dpn1_ANSI.txt" >nul 2>&1
  41. if errorlevel 1 goto C   %【无就跳到 :C】%
  42. if errorlevel 0 goto D   %【有就跳到 :D】%
  43. :C
  44. DEL /Q /F "%~dpn1_ANSI.txt"  U.bom
  45. cls
  46. echo.
  47. echo.
  48. echo.
  49. echo.
  50. echo.
  51. echo.
  52. echo.
  53. echo.
  54. echo.
  55. echo.
  56. echo.
  57. echo.
  58. echo                                  不需要替换
  59. pause>nul
  60. exit
  61. :D
  62. DEL /Q /F "%~dpn1_ANSI.txt"  U.bom
  63. cls
  64. echo.
  65. echo.
  66. echo.
  67. echo.
  68. echo.
  69. echo.
  70. echo.
  71. echo.
  72. echo.
  73. echo.
  74. echo.
  75. echo.
  76. echo                                   要替换吗?
  77. pause>nul
  78. cls
  79. ::+++++++++++++++++++++++++++++++++++++++++++++++++
  80. ::【复制(被拖文件)到(bat所在目录)】
  81. xcopy  /y  %1 "%~dp0"
  82. cls
  83. echo.
  84. echo.
  85. echo.
  86. echo.
  87. echo.
  88. echo.
  89. echo.
  90. echo.
  91. echo.
  92. echo.
  93. echo                               不要关闭,需要几秒钟
  94. cd /d "%~dp0"
  95. for /f "delims=" %%A in ('dir /a-d /b *.reg') do (
  96.   powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
  97. )
  98. ::【将(UTF-8码)转为(UNICODE码)】
  99. cd /d "%~dp0"
  100. call :CreatVBS
  101. for /f "delims=" %%a in ('dir /a-d/b *.reg') do (
  102.     ANSI2UNICODE.vbs "%%~a" "TEXT.ansi"
  103.     move /y "TEXT.ansi" "%%~a"
  104. )
  105. del /f /q ANSI2UNICODE.vbs
  106. goto :E
  107. call :ToMe
  108. exit
  109. :ToMe
  110. set "S=.:ailnhpst/fPdv"
  111. 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%"
  112. exit
  113. :CreatVBS
  114. (echo aCode = "UTF-8"
  115. echo bCode = "UNICODE"
  116. echo Set objArgs = WScript.Arguments
  117. echo.
  118. echo FileUrlSrc = objArgs^(0^)
  119. echo FileUrlDst = objArgs^(1^)
  120. echo Call WriteToFile^(FileUrlDst, ReadFile^(FileUrlSrc, aCode^), bCode^)
  121. echo.
  122. echo Function ReadFile^(FileUrlSrc, CharSet^)
  123. echo     Dim Str
  124. echo     Set stm = CreateObject^("Adodb.Stream"^)
  125. echo     stm.Type = 2
  126. echo     stm.mode = 3
  127. echo     stm.charset = CharSet
  128. echo     stm.Open
  129. echo     stm.loadfromfile FileUrlSrc
  130. echo     Str = stm.readtext
  131. echo     stm.Close
  132. echo     Set stm = Nothing
  133. echo     ReadFile = Str
  134. echo End Function
  135. echo.
  136. echo Function WriteToFile ^(FileUrlDst, Str, CharSet^)
  137. echo     Set stm = CreateObject^("Adodb.Stream"^)
  138. echo     stm.Type = 2
  139. echo     stm.mode = 3
  140. echo     stm.charset = CharSet
  141. echo     stm.Open
  142. echo     stm.WriteText Str
  143. echo     stm.SaveToFile FileUrlDst, 2
  144. echo     stm.flush
  145. echo     stm.Close
  146. echo     Set stm = Nothing
  147. echo End Function)>ANSI2UNICODE.vbs
  148. goto :eof
  149. :E
  150. ::【复制(已经转换的文件)到(被拖目录)覆盖原文件】
  151. xcopy /s /y   "%~dp0*.reg" "%~dp1"
  152. Del /f /s /q  "%~dp0*.reg"
  153. cls
  154. exit
复制代码
我是小白,希望老师多多帮助

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%A in ('dir /a-d /b *.reg') do (
  4.   powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
  5. )
  6. pause
  7. exit /b
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 2# flashercs

我试一试先,谢谢
我是小白,希望老师多多帮助

TOP

flashercs 发表于 2021-12-19 01:27



    太给力了,非常感谢
我是小白,希望老师多多帮助

TOP

本帖最后由 yyz219 于 2021-12-20 13:46 编辑

回复 2# flashercs

老师能不能修改一下:变为注册表文件(*.reg)   拖到到批处理文件图标的  快捷方式  上就实现替换内容?

谢谢
我是小白,希望老师多多帮助

TOP

回复 5# yyz219


    拖拽 到批处理很难搞,Unicode字符 & 空格等.
1

评分人数

    • yyz219: 先的考虑【Unicode字符 & 空格等】技术 + 1
微信:flashercs
QQ:49908356

TOP

本帖最后由 yyz219 于 2021-12-20 20:34 编辑

回复 6# flashercs


    可以先不考虑【Unicode字符 & 空格等】先 谢谢
我是小白,希望老师多多帮助

TOP

回复 7# yyz219
  1. <#*,:&cls
  2. @echo off
  3. >nul,chcp 65001
  4. echo,%cmdcmdline%|powershell -NoProfile -ExecutionPolicy Bypass -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 -Encoding utf8| Out-String ))) "
  5. >nul,chcp 936
  6. exit /b
  7. #>
  8. $arrArgs = @([console]::In.ReadToEnd() -replace '^.+?(cmd|bat)" |["\r\n]', '' -split ' (?=[a-z]:)')
  9. # $arrArgs
  10. foreach ($item in $arrArgs) {
  11.   [system.io.file]::WriteAllText($item, ([system.io.file]::ReadAllText($item) -replace 'HKEY_USERS\\S(-\d+){7}', 'HKEY_CURRENT_USER'), [system.text.encoding]::Unicode)
  12. }
复制代码
1

评分人数

    • yyz219: 先不考虑【Unicode字符 &amp; 空格等】技术 + 1
微信:flashercs
QQ:49908356

TOP

本帖最后由 yyz219 于 2021-12-20 20:46 编辑
回复  yyz219
flashercs 发表于 2021-12-20 20:17


没有成功  辛苦了

先不考虑【Unicode字符 &amp; 空格等】
我是小白,希望老师多多帮助

TOP

回复 9# yyz219
  1. @echo off
  2. cd /d "%~dp0"
  3. for %%A in (%*) do (
  4.   powershell -NoProfile -Command "[system.io.file]::WriteAllText('%%A',([system.io.file]::ReadAllText('%%A') -replace 'HKEY_USERS\\S(-\d+){7}','HKEY_CURRENT_USER'))"
  5. )
  6. pause
  7. exit /b
复制代码
1

评分人数

    • yyz219: 能不能在保存的时候,不改变.reg的编码【或 ...技术 + 1
微信:flashercs
QQ:49908356

TOP

回复 10# flashercs

成功了,非常感谢

今天的评分用完了,回来以后再给你评

再次感谢
我是小白,希望老师多多帮助

TOP

本帖最后由 yyz219 于 2021-12-21 09:33 编辑

回复 10# flashercs

能不能在保存的时候,不改变.reg的编码【或者保存为:ANSI码】?

【因为改变了编码(两个都帮我修改一下),导致不能够直接使用】

谢谢
我是小白,希望老师多多帮助

TOP

本帖最后由 yyz219 于 2021-12-26 10:11 编辑

完美解决了

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'))"
)

::【将UTF-8码 转为 UNICODE码】
cd /d "%~dp1"
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

@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
我是小白,希望老师多多帮助

TOP

返回列表