该代码是基础代码,可惜没人关心。
经过修改,可以实现提取指定字符串,进一步可以提取文本中任意字符前后的内容。
以下用以提取字符串“txt”,该代码用于将多个文本文件拖曳进批处理后同时获取这几个文本文件的路径名,也可以用以提取一个文本内容中含有“txt”的路径名。
可以修改“txt”为“exe”等后缀名,用以扑捉其它文件路径名。
有一定的限制,比如部分空格问题,可以考虑去掉“.%~dp0\”。以及效率偏低,有待完善。- @echo off
- echo %*>>%~dp0\_2tyxs.txt
- echo.>%~dp0\_test2.txt
- setlocal enabledelayedexpansion
- for /f "tokens=*" %%i in (%~dp0\_2tyxs.txt) do (
- set var=%%i
- for /l %%a in (0,1,1000) do (
- set /a ddl=%%a-1
- set str2=!var:~%%a,2!
- if "!str2!"==":\" call echo %%var:~!ddl!,1%%!var:~%%a,1000!>>%~dp0\_test1.txt
- )
- )
- for /f "tokens=*" %%i in (=%~dp0\_test1.txt) do (
- set var=%%i
- for /l %%a in (0,1,1000) do (
- set /a ddf=%%a+4
- set str=!var:~%%a,4!
- if "!str!"==".txt" echo !var:~0,%%a!.txt>>%~dp0\_test2.txt
- )
- )
- del %~dp0\_test1.txt,%~dp0\_2tyxs.txt
- for /f "tokens=1,2,3,4 delims=." %%a in (%~dp0\_test2.txt) do (
- set vara=%%a
- set varb=%%b
- set varcc=!varc:~0,1!"
- if /i "!varb:~0,3!"=="txt" echo !vara!.!varb:~0,3!>>%~dp0\_test3.txt
- )
- _results.txt
- for /f "delims=" %%a in ('sort %~dp0\_test3.txt') do (
- if not %%a equ !b! echo %%a>>%~dp0\_results.txt
- set b=%%a)
- del %~dp0\_test3.txt,%~dp0\_test2.txt
- start "" %~dp0\_results.txt
- EXIT
复制代码
[ 本帖最后由 cjiabing 于 2010-8-20 22:29 编辑 ] |