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

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

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

回复 15# ZDG0000


    这个应该是违反版规的,去编辑一下吧
我是小白,希望老师多多帮助

TOP

回复 14# yyz219


2.txt文件的内容要写东西啊,就是你说的要根据填写的来替换.png,2.txt要求要这样每行只写一个后缀:
.bmp
.gif
.jpeg
.jpg

TOP

水个贴
13245879

TOP

回复 12# InterFrog


    我自行补上2.txt以后也没有输出我需要的内容
我是小白,希望老师多多帮助

TOP

回复 12# InterFrog


    提示:

系统找不到文件 2.txt。
请按任意键继续. . .
我是小白,希望老师多多帮助

TOP

回复 11# yyz219


    在原来的回答基础上增加了2.txt要求的格式,请看一下

TOP

回复 10# InterFrog


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

TOP

本帖最后由 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

评分人数

TOP

下面是结合大师: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
复制代码
我是小白,希望老师多多帮助

TOP

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

TOP

回复 6# flashercs


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

TOP

  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

评分人数

微信:flashercs
QQ:49908356

TOP

本帖最后由 yyz219 于 2022-7-19 10:00 编辑

编辑(跟主楼意思一样)
我是小白,希望老师多多帮助

TOP

回复 3# InterFrog


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

TOP

返回列表