标题: [文本处理] 批处理怎样按要求循环提取TXT? [打印本页]
作者: put371 时间: 2011-2-28 18:13 标题: 批处理怎样按要求循环提取TXT?
文本 t.TXT如下
1111111111
111 111 11111
111111
111111
111
111111
22
3333333
可以根据下面的循环提取
1111111111
111 111 11111
111111
回车提取
111111
111
111111
22
在回车提取
3333333
这里是用空行做分割的当然也可以用别的符号等做分割。不知道大哥大姐大侠有什么好的方法?
@echo off
setlocal enabledelayedexpansion
for /f %%i in (t.txt) do (
set var=%%i
echo %%i
call :1
pause
)
:1
mshta vbscript:clipboarddata.setdata("text","!var!")(close)
goto :eof
用上面的代码没办法一段断提前只可以一行一行
作者: batman 时间: 2011-2-28 19:00
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* t.txt') do (
- if "%%b" equ "" (
- for /l %%c in (!min!,1,!max!) do echo !_%%c!
- set "min="&pause
- ) else (
- if not defined min set /a min=%%a
- set "_%%a=%%b&set /a max=%%a
- )
- )
- for /l %%a in (%min%,1,%max%) do echo !_%%a!
- pause
复制代码
作者: batman 时间: 2011-2-28 19:14
或者这样,只是效率是会有点问题:- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* t.txt') do (
- if "%%b" equ "" (
- call :lp&pause&set "str="
- ) else (
- set "str=!str!echo %%b^&"
- )
- )
- call :lp
- pause&goto :eof
- :lp
- %str%
复制代码
[ 本帖最后由 batman 于 2011-2-28 19:19 编辑 ]
作者: hfg1977 时间: 2011-2-28 19:14
空行做分割: 没看出来哪里要循环的- @echo off
- setlocal enabledelayedexpansion&cls
- :start ============================================================
- for /f "tokens=1* delims=:" %%a in ('findstr/n .* 1.txt') do (
- if "%%b"=="" (
- set/p choice=继续提取^(y^|n^):
- if "!choice!"=="n" goto end
- )
- echo %%a %%b
- )
-
- :end ==============================================================
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |