Dos批处理编程*字符串批量处理【查找|替换】

程序说明: 查找当前目录(含子目录)下特定类型文件中存在指定字符串的所有行。

@echo off
:aa
echo.
echo ————————输入准备————————
echo.
::待查找文件类型(多个文件类型请用空格隔开)
set FILETYPE=*.pas

set /p key=  待查找字符串:
echo   查找文件类型: [%FILETYPE%]

set result=temp_%random%.txt
echo.
findstr /i /s %key% %FILETYPE%>%result%
%result%
echo.
del /f %result%
pause
cls
goto aa

 

————————————————————————————————————

程序说明:查找并替换当前目录(含子目录)下特定类型文件中指定字符串。

@echo off
:aa
Notepad %0

::-------------------------自定义项目-----------------------------

::指定预处理根目录(递归)
set DPATH=.

::指定预处理文件类型(多个扩展名用空格分开)
set FILETYPE=*.pas

::指定预查找字符串(不支持特殊字符)
set Find_str=time

::指定用于替换的字符串(不支持特殊字符)
set REP_str=Time

::----------------------------------------------------------------


set tmep=replace_bak.tmp
cd %DPATH%
setlocal enabledelayedexpansion
for /r %%k in (%FILETYPE%) do (
set /a sum=sum+1>nul
cd.>"%tmep%"
for /f "tokens=1* delims=:" %%i in ('findstr /i /n .* "%%k"') do (
cls
echo.
echo 正在执行递归批量查找替换... ....
echo.
echo 目标文件类型[ %FILETYPE% ]
echo 待替换字符串[ %Find_str% ]
echo 替换为字符串[ %REP_str% ]
echo 当前修改文件[ %%k ]
echo 当前修改行目[ %%i ]
    set str=%%j
    if not "!str!"=="" set "str=!str:%Find_str%=%REP_str%!"
    >>"%tmep%" echo.!str!
)
move "%tmep%" "%%k"
)
set /a total=!sum!-1
echo.
echo 总计查找了!total!个文件(含文件夹)
echo 执行完毕
echo.
cd %~dp0
if exist %tmep% del /f %tmep%
pause
set sum=0
cls
goto aa

posted on 2009-01-04 15:32  starspace  阅读(4846)  评论(0编辑  收藏  举报

导航