找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 64254|回复: 16

[文本处理] 求批处理:删除文本含关键字(整行),修改另外一些关键字

[复制链接]
发表于 2022-7-19 00:29:09 | 显示全部楼层 |阅读模式
本帖最后由 yyz219 于 2022-7-19 13:31 编辑

现需要删除1.txt里面的,第2、3、4、5个“Windows Registry Editor Version 5.00”(整行)
修改1.txt里面的,第2、3、4、5个“.png”(依次为:.bmp .gif .jpeg .jpg)【希望编辑.bmp .gif .jpeg .jpg方便,最好是读取2.txt:.bmp .gif .jpeg .jpg】

其它内容跟1.txt保持一致

1.txt:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  3. "a"="iexplore.exe"
  4. "MRUList"="cebdfagij"
  5. "b"="小Q画笔.exe"
  6. "d"="ACDSeeQV.exe"
  7. "e"="chrome.exe"
  8. "f"="mspaint.exe"
  9. "g"="搜索.exe"
  10. "h"="Honeyview32.exe"
  11. "i"="复制到剪切板.exe"
  12. "j"="DllHost.exe"
  13. "c"="Imagine64.exe"

  14. Windows Registry Editor Version 5.00

  15. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  16. "a"="iexplore.exe"
  17. "MRUList"="cebdfagij"
  18. "b"="小Q画笔.exe"
  19. "d"="ACDSeeQV.exe"
  20. "e"="chrome.exe"
  21. "f"="mspaint.exe"
  22. "g"="搜索.exe"
  23. "h"="Honeyview32.exe"
  24. "i"="复制到剪切板.exe"
  25. "j"="DllHost.exe"
  26. "c"="Imagine64.exe"

  27. Windows Registry Editor Version 5.00

  28. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  29. "a"="iexplore.exe"
  30. "MRUList"="cebdfagij"
  31. "b"="小Q画笔.exe"
  32. "d"="ACDSeeQV.exe"
  33. "e"="chrome.exe"
  34. "f"="mspaint.exe"
  35. "g"="搜索.exe"
  36. "h"="Honeyview32.exe"
  37. "i"="复制到剪切板.exe"
  38. "j"="DllHost.exe"
  39. "c"="Imagine64.exe"

  40. Windows Registry Editor Version 5.00

  41. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  42. "a"="iexplore.exe"
  43. "MRUList"="cebdfagij"
  44. "b"="小Q画笔.exe"
  45. "d"="ACDSeeQV.exe"
  46. "e"="chrome.exe"
  47. "f"="mspaint.exe"
  48. "g"="搜索.exe"
  49. "h"="Honeyview32.exe"
  50. "i"="复制到剪切板.exe"
  51. "j"="DllHost.exe"
  52. "c"="Imagine64.exe"

  53. Windows Registry Editor Version 5.00

  54. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  55. "a"="iexplore.exe"
  56. "MRUList"="cebdfagij"
  57. "b"="小Q画笔.exe"
  58. "d"="ACDSeeQV.exe"
  59. "e"="chrome.exe"
  60. "f"="mspaint.exe"
  61. "g"="搜索.exe"
  62. "h"="Honeyview32.exe"
  63. "i"="复制到剪切板.exe"
  64. "j"="DllHost.exe"
  65. "c"="Imagine64.exe"
复制代码
发表于 2022-7-19 01:01:25 | 显示全部楼层
第一次来批处理之家,就看到还有人在加班啊,哈哈哈
发表于 2022-7-19 01:04:14 | 显示全部楼层
回复 2# InterFrog


    我可以帮你试试看
 楼主| 发表于 2022-7-19 07:38:35 | 显示全部楼层
回复 3# InterFrog


    谢谢先
 楼主| 发表于 2022-7-19 08:12:11 | 显示全部楼层
本帖最后由 yyz219 于 2022-7-19 10:00 编辑

编辑(跟主楼意思一样)
发表于 2022-7-19 13:04:56 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. @REM 文件类型
  5. set ext=.png .jpg .jpeg .bmp .gif
  6. @REM 注册表文件
  7. set regfile=1.txt
  8. (
  9.   echo Windows Registry Editor Version 5.00
  10.   echo.
  11.   for %%A in (%ext%) do (
  12.     echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\%%~A\OpenWithList]
  13.     echo "a"="iexplore.exe"
  14.     echo "MRUList"="cebdfagij"
  15.     echo "b"="小Q画笔.exe"
  16.     echo "d"="ACDSeeQV.exe"
  17.     echo "e"="chrome.exe"
  18.     echo "f"="mspaint.exe"
  19.     echo "g"="搜索.exe"
  20.     echo "h"="Honeyview32.exe"
  21.     echo "i"="复制到剪切板.exe"
  22.     echo "j"="DllHost.exe"
  23.     echo "c"="Imagine64.exe"
  24.     echo.
  25.   )
  26. )>%regfile%
  27. endlocal
  28. pause
  29. exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-7-19 13:11:07 | 显示全部楼层
回复 6# flashercs


    我试一试先  谢谢
 楼主| 发表于 2022-7-19 13:24:26 | 显示全部楼层
本帖最后由 yyz219 于 2022-7-19 13:32 编辑

回复 6# flashercs
  1.   echo "a"="iexplore.exe"
  2.     echo "MRUList"="cebdfagij"
  3.     echo "b"="小Q画笔.exe"
  4.     echo "d"="ACDSeeQV.exe"
  5.     echo "e"="chrome.exe"
  6.     echo "f"="mspaint.exe"
  7.     echo "g"="搜索.exe"
  8.     echo "h"="Honeyview32.exe"
  9.     echo "i"="复制到剪切板.exe"
  10.     echo "j"="DllHost.exe"
  11.     echo "c"="Imagine64.exe"
复制代码
上面的内容可能不是固定的(这个由1.txt决定)

要求仅仅:
删除第2、3、4、5个“Windows Registry Editor Version 5.00”(整行)
修改1.txt里面的,第2、3、4、5个“.png”(依次为:.bmp .gif .jpeg .jpg)

其它内容跟1.txt保存一致
 楼主| 发表于 2022-7-19 16:37:35 | 显示全部楼层
下面是结合大师:flashercs 的代码,自己拼凑而成的代码,可以实现我的要求(但是,可能不科学),请各位老师斧正
  1. @echo off
  2. ::【导出的PNG注册表项】
  3. regedit /e "PNG注册表项.reg"  "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList"
  4. ::【注册表文件转文本】
  5. type PNG注册表项.reg>159.txt
  6. ::【删除文本前3行】
  7. SET TxtDir="%~dp0"
  8. SET /A N=3
  9. CD /D %TxtDir%
  10. FOR /F "tokens=1 delims=" %%I IN ('DIR /A /B 159.txt') DO ((MORE +%N% "%%I">"%%I_")&(DEL /A /F /Q "%%I")&(REN "%%I_" "%%I"))
  11. ::****************************************************************
  12. ::【生成删除原来项的注册表文件】
  13. setlocal enabledelayedexpansion
  14. cd /d "%~dp0"
  15. ::【文件的后缀】
  16. set ext=.bmp .gif .jpeg .jpg .png
  17. (
  18.   echo Windows Registry Editor Version 5.00
  19.   echo.
  20.   for %%A in (%ext%) do (
  21.     (echo [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\%%~A\OpenWithList]
  22.     echo.)
  23.   )
  24. )>>2.reg
  25. ::【根据159.txt生成注册表】
  26.   for %%A in (%ext%) do (
  27.     (echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\%%~A\OpenWithList]
  28.     type "159.txt")
  29.   )>>2.reg
  30. regedit.exe/s  "2.reg"          %【导入注册表】%
  31. del PNG注册表项.reg 2.reg 159.txt
  32. pause
  33. exit
复制代码
发表于 2022-7-21 01:28:03 | 显示全部楼层
本帖最后由 InterFrog 于 2022-7-21 22:09 编辑

如果解决了问题,请务必好评,好评是一个初学者学下去的动力,嘿嘿
此代码解决的是你最开始的需求,同时兼顾了你最新的需求(新生成的不需要这一整行 “Windows Registry Editor Version 5.00”),代码如下(此为纯净版代码,带注释版代码附在最后):
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. type 0.txt > 1.txt
  4. echo. >> 1.txt
  5. for /f "tokens=*" %%i in (2.txt) do (
  6.         echo. >> 1.txt
  7.         for /f "skip=2 tokens=*" %%j in (0.txt) do (
  8.                 set a=%%j
  9.                 set a=!a:.png=%%i!
  10.                 echo !a! >> 1.txt
  11.         )
  12. )
  13. start 1.txt
  14. pause
复制代码
对了,2.txt文件的内容要求要这样每行只写一个后缀:
.bmp
.gif
.jpeg
.jpg

0.txt的内容就是你最先的那样的:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
"a"="iexplore.exe"
"MRUList"="cebdfagij"
"b"="小Q画笔.exe"
"d"="ACDSeeQV.exe"
"e"="chrome.exe"
"f"="mspaint.exe"
"g"="搜索.exe"
"h"="Honeyview32.exe"
"i"="复制到剪切板.exe"
"j"="DllHost.exe"
"c"="Imagine64.exe"


楼主你好,那天晚上在这里注册账号之后,就随便看了看,然后就看到你的贴子,说要试试帮你解决的,后面因为工作忙忘记回复你了,所以我还是按照你最开始的要求做的,同时也兼顾了你最新的要求。

带详细注释版代码:
  1. @REM 关闭回显
  2. @echo off
  3. REM 变量延迟坏境,开启后局部变量的使用要用!xxx!而不是%xxx%
  4. setlocal enabledelayedexpansion
  5. REM 先将0.txt的内容覆盖到1.txt
  6. type 0.txt > 1.txt
  7. REM 将一行空行追加到1.txt中
  8. echo. >> 1.txt
  9. REM 逐行遍历2.txt
  10. for /f "tokens=*" %%i in (2.txt) do (
  11. REM 将一行空行追加到1.txt中
  12.         echo. >> 1.txt
  13. REM 忽略首2行(忽略的2行是:第1行是"Windows Registry Editor Version 5.00",
  14. REM 第2行是"空白行"),然后逐行遍历0.txt
  15.         for /f "skip=2 tokens=*" %%j in (0.txt) do (
  16. REM 将每行内容赋值给a
  17.                 set a=%%j
  18. REM 用%%i替换a中的".png"(a中没有就不会进行替换),然后赋值给a
  19.                 set a=!a:.png=%%i!
  20. REM 将最新的a变量追加到1.txt,注意局部变量a的使用要用!a!而不是%a%
  21.                 echo !a! >> 1.txt
  22.         )
  23. )
  24. REM 打开生成的1.txt
  25. start 1.txt
  26. REM 暂停
  27. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-7-21 22:01:06 | 显示全部楼层
回复 10# InterFrog


    辛苦了,我试一试先,谢谢
发表于 2022-7-21 22:10:51 | 显示全部楼层
回复 11# yyz219


    在原来的回答基础上增加了2.txt要求的格式,请看一下
 楼主| 发表于 2022-7-21 22:12:49 | 显示全部楼层
回复 12# InterFrog


    提示:

系统找不到文件 2.txt。
请按任意键继续. . .
 楼主| 发表于 2022-7-21 22:27:22 | 显示全部楼层
回复 12# InterFrog


    我自行补上2.txt以后也没有输出我需要的内容
发表于 2022-7-22 01:00:07 | 显示全部楼层
水个贴
13245879
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 00:40 , Processed in 0.023977 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表