标题: [文本处理] 批处理怎么用一个文件中的字符串替换另一个文件的字符串? [打印本页]
作者: zhouyao800 时间: 2013-11-5 11:16 标题: 批处理怎么用一个文件中的字符串替换另一个文件的字符串?
a.txt文件如下(a.txt是系统生成的每天都变但形式是一样的):
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
b.txt 如下:
OPERATION RESTORE
OBJECTTYPE DATABASE
RESTORETYPE MOVE
DATABASE "yydb"
MOVE "yjdb_Data"
TO "D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\yjdbnew.mdf"
MOVE "yjdb_Log"
TO "D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\yjdbnew_log.ldf"
# The following image is type: Full
NBIMAGE "lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20130826123219..C"
SQLHOST "backup-YX"
NBSERVER "NBUSERVER02"
b1.txt如下:
OPERATION RESTORE
OBJECTTYPE DATABASE
RESTORETYPE MOVE
DATABASE "ywdb"
MOVE "newksyy_Data"
TO "D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ywdb.mdf"
MOVE "newksyy_Log"
TO "D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ywdb_log.ldf"
# The following image is type: Full
NBIMAGE "lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20130826123057..C"
SQLHOST "backup-YX"
NBSERVER "NBUSERVER02"
b2.txt如下:
OPERATION RESTORE
OBJECTTYPE DATABASE
RESTORETYPE MOVE
DATABASE "cis"
MOVE "cis_Data"
TO "D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\cis.MDF"
MOVE "cis_Log"
TO "D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\cis__Log.LDF"
# The following image is type: Full
NBIMAGE "lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131005040303..C"
SQLHOST "backup-YX"
NBSERVER "NBUSERVER02"
现在想用批处理将a.txt中的lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\这一行
(就是看这个中间含有yydb)不要最后两个字符也就是:\这两个字符不要,其它这一行复制出来粘帖出来替换b.txt中NBIMAGE后面单引号里面的内容,生成c.txt
下面的同理,将中间含有ywdb的第一行不要最后两个字符也就是:\这两个字符不要,其它这一行复制出来粘帖出来替换b1.txt中NBIMAGE后面单引号里面的内容生成c1.txt
将中间含有cis的第一行不要最后两个字符也就是:\这两个字符不要,其它这一行复制出来粘帖出来替换b2.txt中NBIMAGE后面单引号里面的内容,生成c2.txt
作者: DAIC 时间: 2013-11-5 13:20
- @echo off
- call :substr yydb b.txt c.txt
- call :substr ywdb b1.txt c1.txt
- call :substr cis b2.txt c2.txt
- goto :eof
-
- :substr
- for /f "delims=" %%i in ('findstr "%1" a.txt') do (
- set line=%%i
- )
- set line=%line:~0,-2%
- echo %line%
- type %2 | sed "s/NBIMAGE.*/NBIMAGE\"%line%\"/" > %3
复制代码
作者: zhouyao800 时间: 2013-11-6 10:40
昨晚试了一下是可以的,但今天早上系统生成的a.txt变成了这样
k2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
再试就不行了,他自动复制替换的不是第一行的了,替换成了下面的了,大神能给帮忙看下吗?
作者: zhouyao800 时间: 2013-11-6 10:41
回复 2# DAIC
昨晚试了一下是可以的,但今天早上系统生成的a.txt变成了这样
k2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.yydb.~.7.001of001.20131012040736..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.ywdb.~.7.001of001.20131012040537..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
lk2.MSSQL7.LK2.db.cis.~.7.001of001.20131012040305..C:\
再试就不行了,他自动复制替换的不是第一行的了,替换成了下面的了,大神能给帮忙看下吗?
作者: DAIC 时间: 2013-11-6 13:36
回复 4# zhouyao800 - @echo off
- call :substr yydb b.txt c.txt
- call :substr ywdb b1.txt c1.txt
- call :substr cis b2.txt c2.txt
- goto :eof
-
- :substr
- for /f "delims=" %%i in ('findstr "%1" a.txt') do (
- set line=%%i
- goto :next
- )
-
- :next
- set line=%line:~0,-2%
- echo %line%
- type %2 | sed "s/NBIMAGE.*/NBIMAGE\"%line%\"/" > %3
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |