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

[文本处理] 批处理综合运用到文本中:改写、删除、替换等

0.
更改1.txt中所有的\为#,更改后文件名依然为1.txt。

1.
把1.txt每一行的等号右边部分,包括等号自身,都删除掉,就是说每一行只是保留等号左边部分


2.
把文本的每一行的内容改写成:


REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\每一行原来的内容(指经过了第1步之后)" *.reg

其中*是一系列的阿拉伯数字

例如原来的文本是这样的:
dd\ddd="ddd"
ddd\aadadf="f**"


经过第0步就变成
dd#ddd="ddd"
ddd#aadadf="f**"


经过第1步就变成
dd#ddd
ddd#aadadf


经过第2步就变成
REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\
dd#ddd" 1.reg
REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\
ddd#aadadf" 2.reg

3.
然后改1.txt为1.bat,运行这个bat,生成一系列的reg



4.
查找1.reg中的诸如"Service"="ViBus"的行,提取出"Service"所属的值vibus,赋予变量a(就是a=vibus,注意不含双引号)

然后运行

REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\a(这里指a变量)" 11.reg

例如:
REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\vibus" 11.reg

至于11.reg这个名称是怎样生成的,就是在原来的1.reg后面加上1


5.
对2.reg重复第4步,生成文件21.reg
对3.reg重复第4步,生成文件31.reg
直到reg文件都查找完为止


6.
把生成的所有reg文件中的system字符都替换成system1

替换代码:
@echo off
for /f "delims=" %%a in ('type a.txt') do set str=%%a&call echo>>s.txt %%str:system=soft%%
move s.txt a.txt
start a.txt

这是一个实例,因为这个可以用于UNICODE格式文本

7.加一步(这个是后来想到的)
寻找指定文件夹中的文件名为a变量的sys文件,然后复制到另一个指定文件夹


注意:reg文件是UNICODE格式,操作过程中请注意每一步都要能够用在UNICODE格式文本中

根据Batcher的思路,操作UNICODE格式文本,先type一下就可以了,我也不懂是否可以

http://bbs.bathome.net/viewthrea ... romuid=1467#pid7400

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. ren primitive.txt new.txt
  3. for /f "delims==" %%a in (new.txt) do (
  4.     set/a n+=1
  5.     echo REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\%%a" !n!.reg
  6. )>>primitive.bat
  7. call primitive.bat
  8. for /l %%i in (1 1 %n%) do (
  9. for /f "tokens=2 delims==" %%a in ('type %%i.reg^|findstr /i "Service"=""') do REG EXPORT "HKLM\SYSTEM\CurrentControlSet\Services\%%a %%i1.reg
  10. )
  11. pause
复制代码

[ 本帖最后由 pusofalse 于 2008-8-14 16:09 编辑 ]
心绪平和,眼藏静谧。

TOP

第五步你实现了吗?好像没有?

TOP

很感谢,但是要说声sorry,我忘了一步

在第一步执行前请把1.txt中所有 \ 字符改成 # 好吗?其余步骤不变
再次麻烦你了

[ 本帖最后由 282842712474 于 2008-8-14 16:30 编辑 ]

TOP

反馈:
首先,1-3成功了,生成了1.reg等文件,但是11.reg等文件没有生成(好像没有找到"Service"所属的值??)

还有,改所有reg中的system为system1没有成功(好像没有改??)

下面是运行信息:

C:\Documents and Settings\Administrator\桌面>setlocal enabledelayedexpansion

C:\Documents and Settings\Administrator\桌面>ren primitive.txt new.txt

C:\Documents and Settings\Administrator\桌面>for /F "delims==" %a in (new.txt) d
o (
set/a n+=1
echo REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\%a" !
n!.reg
) 1>>primitive.bat

C:\Documents and Settings\Administrator\桌面>(
set/a n+=1
echo REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\PCI#C
C_0604" !n!.reg
) 1>>primitive.bat

C:\Documents and Settings\Administrator\桌面>(
set/a n+=1
echo REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\PCI#V
EN_1106&DEV_3149&CC_0101" !n!.reg
) 1>>primitive.bat

C:\Documents and Settings\Administrator\桌面>(
set/a n+=1
echo REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\PCI#V
EN_1106&DEV_0571" !n!.reg
) 1>>primitive.bat

C:\Documents and Settings\Administrator\桌面>(
set/a n+=1
echo REG EXPORT "HKLM\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\PCI#C
C_0601" !n!.reg
) 1>>primitive.bat

C:\Documents and Settings\Administrator\桌面>call primitive.bat

C:\Documents and Settings\Administrator\桌面>REG EXPORT "HKLM\SYSTEM\ControlSet0
01\Control\CriticalDeviceDatabase\PCI#CC_0604" 1.reg

操作成功结束

C:\Documents and Settings\Administrator\桌面>REG EXPORT "HKLM\SYSTEM\ControlSet0
01\Control\CriticalDeviceDatabase\PCI#VEN_1106&DEV_3149&CC_0101" 2.reg

操作成功结束

C:\Documents and Settings\Administrator\桌面>REG EXPORT "HKLM\SYSTEM\ControlSet0
01\Control\CriticalDeviceDatabase\PCI#VEN_1106&DEV_0571" 3.reg

操作成功结束

C:\Documents and Settings\Administrator\桌面>REG EXPORT "HKLM\SYSTEM\ControlSet0
01\Control\CriticalDeviceDatabase\PCI#CC_0601" 4.reg

操作成功结束

C:\Documents and Settings\Administrator\桌面>for /L %i in (1 1 4) do (for /F "to
kens=2 delims==" %a in ('type %i.reg|findstr /i "Service" ""') do REG EXPORT "HK
LM\SYSTEM\CurrentControlSet\Services\%a %i1.reg )

C:\Documents and Settings\Administrator\桌面>(for /F "tokens=2 delims==" %a in (
'type 1.reg|findstr /i "Service" ""') do REG EXPORT "HKLM\SYSTEM\CurrentControlS
et\Services\%a 11.reg )
FINDSTR: 无法打开

C:\Documents and Settings\Administrator\桌面>(for /F "tokens=2 delims==" %a in (
'type 2.reg|findstr /i "Service" ""') do REG EXPORT "HKLM\SYSTEM\CurrentControlS
et\Services\%a 21.reg )
FINDSTR: 无法打开
过程试图写入的管道不存在。

C:\Documents and Settings\Administrator\桌面>(for /F "tokens=2 delims==" %a in (
'type 3.reg|findstr /i "Service" ""') do REG EXPORT "HKLM\SYSTEM\CurrentControlS
et\Services\%a 31.reg )
FINDSTR: 无法打开
过程试图写入的管道不存在。

C:\Documents and Settings\Administrator\桌面>(for /F "tokens=2 delims==" %a in (
'type 4.reg|findstr /i "Service" ""') do REG EXPORT "HKLM\SYSTEM\CurrentControlS
et\Services\%a 41.reg )
FINDSTR: 无法打开
过程试图写入的管道不存在。

C:\Documents and Settings\Administrator\桌面>pause
请按任意键继续. . .

TOP

返回列表