回版主:
不好意思,偶知道怎么加code,只是回贴时,粘贴后就马上点发表了,没注意,谢谢提醒。
以后一定注意。
偶在22楼是没有表达得清楚,并且有很大错误,不好意思。
其实是想说:
方法一,sort后可以对比前后行仅仅得出前缀。后缀没有解决。(发现确实不行)
方法二,(24楼代码)则可以分别得出前、后缀,并且速度还可以。(可行,但与22楼表达的有点不同)
完整代码如下(文本文件名与批处理文件名关联了,1000行记录3秒内完成替换):
-
- @echo off
- set $=!
- setlocal enabledelayedexpansion
- (for /l %%i in (1,1,1000) do echo 219%%i17)>%~n0.txt
- set /p var=<%~n0.txt
- set com=
- set bom=
- for /l %%a in (0,1,32) do (
- set "bom=!bom!&set #b%%a!$!str:~-%%a,1!$!=!$!str:~-%%a,1!$!"
- if "!var:~%%a,1!"=="" goto :scok
- set "com=!com!&set #c%%a!$!str:~%%a,1!$!=!$!str:~%%a,1!$!"
- )
- :scok
- set com=!com:~1!
- set bom=!bom:~1!
- set "bom=!bom:*&=!"
- for /f %%i in (%~n0.txt) do (set str=%%i
- %com%
- %bom%
- )
- set var=
- set tou=
- for /f "tokens=1,2 delims==" %%a in ('set #c') do (set str=%%a
- if "!str:~2,1!"=="!var!" goto :oktou
- set tou=!tou!%%b
- set var=!str:~2,1!
- )
- :oktou
- set wei=
- set var=
- for /f "tokens=1,2 delims==" %%a in ('set #b') do (set str=%%a
- if "!str:~2,1!"=="!var!" goto :okwei
- set wei=%%b!wei!
- set var=!str:~2,1!
- )
- :okwei
- set tou=%tou:~,-1%&set wei=%wei:~1%
- ::前面的找前后缀,后面的进行替换
- (for /f %%i in (%~n0.txt) do (set str=#%%i#
- set str=!str:#%tou%=!
- echo !str:%wei%#=!
- ))>%~n0dest.txt
- start %~n0dest.txt
- pause
复制代码
[ 本帖最后由 netbenton 于 2009-4-22 19:03 编辑 ] |