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

[文件操作] (已解决) 批处理如何替换含有指定字符串的行中的多处指定内容

[复制链接]
发表于 2014-7-22 19:54:24 | 显示全部楼层 |阅读模式
本帖最后由 yuanyannian 于 2014-7-24 21:10 编辑

例如下述文本中(其中有很多内容),我想把所有含有 0x00030001 的行中的 HKLM,"SYSTEM\ 替换为 RegAdd, HKLM,0x3,"SYS\ ,并把这一行中的 ,0x00030001, 替换为 ,(一个逗号),其它行不变。这样的批处理请老师帮助,谢谢!
HKLM,"SYSTEM\CurrentControlSet\Control\GroupOrderList","Pointer Class",0x00000002,"00335"
HKLM,"SYSTEM\CurrentControlSet\Control\GroupOrderList","Pointer Port",\,0x00010001,"Scsi"
HKLM,"SYSTEM\CurrentControlSet\Control\GroupOrderList","Primary Disk",0x00030001,\
    05,00,00,00,01,00,00,00,02,00,00,00,03,00,00,00,04,00,00,00,05,00,00,00
HKLM,"SYSTEM\CurrentControlSet\Control\GroupOrderList","SCSI CDROM Class",0x00030001,\
    02,00,00,00,01,00,00,00,02,00,00,00
HKLM,"SYSTEM\CurrentControlSet\Control\GroupOrderList","SCSI Class",0x00030003,\
    03,00,00,00,01,00,00,00,02,00,00,00,03,00,00,00

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-7-22 22:42:43 | 显示全部楼层
本帖最后由 apang 于 2014-7-23 19:04 编辑
  1. @echo off
  2. set "file=HIVESY.INF"
  3. (for /f "delims=" %%a in ('findstr /n .* "%file%"') do (
  4.     set "str=%%a"
  5.     setlocal enabledelayedexpansion
  6.     if "!str:,0x00030001,=!" neq "!str!" (
  7.         set "s=!str:HKLM,"SYSTEM\=RegAdd, HKLM,0x3,"SYS\!"
  8.         if "!s!" neq "!str!" set "str=!s:,0x00030001,=,!"
  9.     )
  10.     set "str=!str:*:=!"
  11.     echo,!str!
  12.     endlocal
  13. ))>"New_%file%"
  14. pause
复制代码
发表于 2014-7-22 22:44:16 | 显示全部楼层
本帖最后由 apang 于 2014-7-23 19:05 编辑
  1. @set @n=0;/* & echo off
  2. set "file=HIVESY.INF"
  3. cscript -nologo -e:jscript "%~0"<"%file%">"New_%file%"
  4. pause & exit/b & rem */
  5. txt = WScript.StdIn.ReadAll();
  6. txt = txt.replace(/HKLM,"SYSTEM\\(.+,)0x00030001,/ig, 'RegAdd, HKLM,0x3,"SYS\\$1')
  7. WScript.Echo(txt)
复制代码

评分

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

查看全部评分

 楼主| 发表于 2014-7-23 06:34:13 | 显示全部楼层
回复 3# apang


谢谢!
刚试了一下,没有反应?
发表于 2014-7-23 09:29:08 | 显示全部楼层
回复 4# yuanyannian


    把需要修改的文本压缩一下传上来,我试试
 楼主| 发表于 2014-7-23 13:13:09 | 显示全部楼层
好的
不好意思,传错了。
是这个:
发表于 2014-7-23 13:31:54 | 显示全部楼层
回复 6# yuanyannian


    亲,你的样本里就没有含 HKLM,"SYSTEM 的行
发表于 2014-7-23 19:09:59 | 显示全部楼层
回复 6# yuanyannian


    已修改,把代码保存为test.bat,与源文件 HIVESY.INF 放在一起
 楼主| 发表于 2014-7-23 20:16:58 | 显示全部楼层
太好了,圆满解决,实在感谢 apang 老师!!!

恕我“贪婪”。批处理能不能处理文本中的某个段落,比如整个段落截取,或删除呢?
比如还是这个文本,其中如下小节:

[AddReg]
HKLM,"SYSTEM\CurrentControlSet\Control\FileSystem","Ntfs",0x00010003,0x00000001
HKLM,"SYSTEM\CurrentControlSet\Control\FontAssoc","ANSI(00)",0x00000002,"YES"
HKLM,"SYSTEM\CurrentControlSet\Control\FontAssoc","SYMBOL(02)",0x00000002,"NO"
HKLM,"SYSTEM\CurrentControlSet\Control\FontAssoc","OEM(FF)",0x00000002,"YES"
...

[DelReg]
HKLM,"SYSTEM\CurrentControlSet\Services\fsvga"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0402"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0403"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0404"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0405"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0406"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0407"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0408"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","0409"
...

我想将节“[AddReg]” 其下的所有内容全部截取到一个新文本中,或者删除节“[DelReg]” 及其所有内容,
该如何处理呢?
 楼主| 发表于 2014-7-23 20:17:24 | 显示全部楼层
本帖最后由 yuanyannian 于 2014-7-23 20:19 编辑

对不起,重了。
 楼主| 发表于 2014-7-23 20:17:43 | 显示全部楼层
回复 8# apang

对不起,重了。
发表于 2016-8-28 10:34:30 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=HKLM,"SYSTEM\
  4. set b=RegAdd, HKLM,0x3,"SYS\
  5. for /f "delims=" %%a in (1.txt) do (
  6.         echo %%a | find "0x00030001" >nul
  7.         if not errorlevel 1 (
  8.                 set str=%%a
  9.                 call set str=%%str:%a%=%b%%%
  10.                 call set str=%%str:0x00030001,=%%
  11.         ) else (
  12.                 set str=%%a
  13.         )
  14.         echo !str!
  15. )
  16. pause
复制代码
我是用的纯批处理,小学生水平...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 10:29 , Processed in 0.020398 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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