使用批处理文件(batch file)替换字符串

@echo on  是否输出命令行 若为off 则仅输出命令行中的输出显示

%CD%  可获取当前文件所在的路径,其中CD实为 命令行 命令

delims=   按指定字符查找每行,分隔成对应列的字符串并给每行加行号
tokens=*  按指定值取对应列,* 为取全部字符串
for /f "delims=" %%a in ('findstr /n .* %ofile%') do       循环变量文件中每行的字符串,findstr /n .* 为匹配所有字符,并赋值给变量%%a
for /f "delims=" %%a in ('type %ofile%') do                循环变量文件中每行的字符串,type 命令输出文件内容,并赋值给变量%%a

set "str=!str:as=xx!"   替换字符串,将str中的as替换为xx    echo !str:~1!  输出第一列的字符串

>  为创建新文件   >>  向文件中增加内容     echo.   输出新行

下面这种可以替换字符串保留空行,不适合大文件,大文件替换字符串使用powershell比较可靠
@echo on
set dir=%CD%
set ofile=%dir%\output.txt
set ofile1=%dir%\output_tmp.txt

echo -- Merge file produced using batch file from %dir% > %ofile%
echo. >> %ofile%

type %dir%\1.txt >> %ofile%
echo. >> %ofile%
echo. >> %ofile%

type %dir%\2.txt >> %ofile%


@echo off&setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('findstr /n .* %ofile%') do (
set "str=%%a"
set "str=!str:as=xx!"
echo !str:~1! >>%ofile1%
)
for /f "delims=" %%b in ('type %ofile1%') do (
set "str=%%b"
echo !str:~1! >>D:\new_A.txt
)
del %ofile1%&start D:\new_A.txt

pause
posted @ 2011-12-13 16:33  Simon_Chen  阅读(14680)  评论(0编辑  收藏  举报