回复 1# 滴血雄鹰 - @echo off
- @setlocal enabledelayedexpansion
-
- :main
- set /P file=输入文件名
- set /P from=输入替换前的字符
- set /P to=输入替换后的字符
- call:replace %file% %from% %to%
- pause
- goto:eof
-
- :replace
- rem 替换文件中特定字符串并保存
- rem %~1:文件名 ; %~2:替换前 ; %~3:替换后 ;%~4:限定替换次数(未使用)
- call:fopen %1 replace_temp
- cd.>"%~1"
- set /A replace_len=fopen_len-1
- for /L %%i in (0,1,%replace_len%) do (
- set get=!replace_temp[%%i]!
- if "!get!"=="" (
- echo.>>"%~1"
- ) else (
- echo !get:%~2=%~3!>>"%~1"
- )
- )
- goto:eof
-
- :fopen
- rem %~1 为读取文件名,%~2为储存的变量名
- rem 采用数组的方式储存,不储存换行符
- rem 若无%~2,使用%~n1作为储存的变量名
- set fopen_file=%~1
- if "%~2"=="" (set fopen_vale=%~n1) else (set fopen_vale=%~2)
- set fopen_len=0
- for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
- set %fopen_vale%[!fopen_len!]=%%j
- set /A fopen_len+=1
- )
- goto:eof
复制代码 考虑到扩展性,把算法封装了一下。 |