Board logo

标题: [文本处理] 【已解决】求:bat修改文本内容(第三方也行)。谢谢! [打印本页]

作者: yyz219    时间: 2023-10-10 13:31     标题: 【已解决】求:bat修改文本内容(第三方也行)。谢谢!

本帖最后由 yyz219 于 2023-10-10 14:53 编辑

完美解决了
@echo off
::【导出注册表为:需修改.reg】
set /p 注册表路径=【右键】粘贴注册表路径:
reg query "%注册表路径%" /s >需修改.reg
::***************************************

::【修改:需修改.reg 变成:有路径.reg】
>有路径.reg (
        echo Windows Registry Editor Version 5.00
        echo=
)
for /f "tokens=1 delims=[]" %%a in ('find /n "默认" ^<"需修改.reg"') do (
        set _"%%a"=1
)
(for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"需修改.reg"') do (
        if "%%b" equ "" (
                echo=
        ) else if not defined _"%%a" (
                echo [%%b]
        ) else (
                for /f "tokens=1-2*" %%c in ("%%b") do (
                        set str=%%e
                        setlocal enabledelayedexpansion
                        echo=@="!str:\=\\!"
                        endlocal
                )
        )
))>>有路径.reg
del 需修改.reg

_________________________________________________________________________________________
原来的问题:
需要修改的1.reg(蓝色内容不是固定的)

HKEY_CLASSES_ROOT\Imagine.PNG\shell\888
    (默认)    REG_SZ    888

HKEY_CLASSES_ROOT\Imagine.PNG\shell\888\command
    (默认)    REG_EXPAND_SZ    D:\1绿色软件\多媒体\抓图抓滚动\抓滚动FSCapture97\FSCapture.exe %1

————————————————————————————
希望运行.bat后,得到“修改以后2.reg”:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Imagine.PNG\shell\888]
@="888"

[HKEY_CLASSES_ROOT\Imagine.PNG\shell\888\command]
@="D:\\1绿色软件\\多媒体\\抓图抓滚动\\抓滚动FSCapture97\\FSCapture.exe %1"
作者: yyz219    时间: 2023-10-10 13:49

本帖最后由 yyz219 于 2023-10-10 13:57 编辑

最后一行的 .exe ,也 有可能是  .bat, 也 有可能没有  %1
作者: 77七    时间: 2023-10-10 13:57

  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. >2.reg (
  5. echo Windows Registry Editor Version 5.00
  6. echo=
  7. )
  8. for /f "tokens=1 delims=[]" %%a in ('find /n "默认" ^<"1.reg"') do (
  9. set _"%%a"=1
  10. )
  11. (for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"1.reg"') do (
  12. if "%%b" equ "" (
  13. echo=
  14. ) else if not defined _"%%a" (
  15. echo [%%b]
  16. ) else (
  17. for /f "tokens=1-2*" %%c in ("%%b") do (
  18. set str=%%e
  19. setlocal enabledelayedexpansion
  20. echo=@="!str:\=\\!"
  21. endlocal
  22. )
  23. )
  24. ))>>2.reg
复制代码

作者: yyz219    时间: 2023-10-10 13:58

77七 发表于 2023-10-10 13:57


我试一试先 谢谢
作者: yyz219    时间: 2023-10-10 14:04

本帖最后由 yyz219 于 2023-10-10 14:05 编辑
77七 发表于 2023-10-10 13:57


输出乱码(中文部分),应该怎样修改?
Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\Imagine.PNG\shell\888]
@="888"

[HKEY_CLASSES_ROOT\Imagine.PNG\shell\888\command]
@="D:\\1��ɫ���\\��y��\\ץͼץ����\\ץ����FSCapture97\\FSCapture.exe %1"
作者: 77七    时间: 2023-10-10 14:06

回复 5# yyz219


   去掉代码第3行,批处理保存为ansi编码格式
作者: yyz219    时间: 2023-10-10 14:09

回复  yyz219


   去掉代码第3行,批处理保存为ansi编码格式
77七 发表于 2023-10-10 14:06



    我在试一试 谢谢
作者: yyz219    时间: 2023-10-10 14:12

回复 6# 77七


   成功了 再次感谢
作者: qixiaobin0715    时间: 2023-10-10 15:07

回复 1# yyz219
  1. @echo off
  2. (echo,Windows Registry Editor Version 5.00
  3. echo,
  4. for /f "delims=" %%i in (1.reg) do (
  5.     for /f "tokens=1,2*" %%a in ("%%i") do (
  6.         if "%%a"=="(默认)" (
  7.             set "str=%%c"
  8.             setlocal enabledelayedexpansion
  9.             echo,@="[!str:\=\\!]"
  10.             endlocal
  11.             echo,
  12.         ) else (
  13.             echo,%%i
  14.         )
  15.     )
  16. ))>2.reg
  17. pause
复制代码

作者: yyz219    时间: 2023-10-10 15:30

回复  yyz219
qixiaobin0715 发表于 2023-10-10 15:07



    谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2