[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样按要求循环提取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

用上面的代码没办法一段断提前只可以一行一行

空行做分割: 没看出来哪里要循环的
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. :start ============================================================
  4. for /f "tokens=1* delims=:" %%a in ('findstr/n .* 1.txt') do (
  5. if "%%b"=="" (
  6. set/p choice=继续提取^(y^|n^):
  7. if "!choice!"=="n" goto end
  8. )
  9. echo %%a %%b
  10. )
  11. :end ==============================================================
  12. pause
复制代码
1

评分人数

    • batman: 乐于助人 思路独特,我老了。。。技术 + 1

TOP

或者这样,只是效率是会有点问题:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* t.txt') do (
  3.     if "%%b" equ "" (
  4.        call :lp&pause&set "str="
  5.        ) else (
  6.        set "str=!str!echo %%b^&"
  7.     )
  8. )
  9. call :lp
  10. pause&goto :eof
  11. :lp
  12. %str%
复制代码

[ 本帖最后由 batman 于 2011-2-28 19:19 编辑 ]
***共同提高***

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* t.txt') do (
  3.     if "%%b" equ "" (
  4.        for /l %%c in (!min!,1,!max!) do echo !_%%c!
  5.        set "min="&pause
  6.        ) else (
  7.        if not defined min set /a min=%%a
  8.        set "_%%a=%%b&set /a max=%%a
  9.     )
  10. )
  11. for /l %%a in (%min%,1,%max%) do echo !_%%a!
  12. pause
复制代码
***共同提高***

TOP

返回列表