标题: [文本处理] 【已解决】BAT:如何删除大于等于8位数的文本行 [打印本页]
作者: 思想之翼 时间: 2015-2-23 04:53 标题: 【已解决】BAT:如何删除大于等于8位数的文本行
本帖最后由 思想之翼 于 2015-2-23 16:50 编辑
D:/数据/内有若干txt文本,每个文本内数据格式为:
126459
1264589
126459
126458
12645370
126458
...
欲批量删除各文本内大于等于8位数的文本行(处理后的数据覆盖原数据),如何用批处理解决?
作者: 慕夜蓝化 时间: 2015-2-23 08:28
- @echo off&setlocal enabledelayedexpansion
- for %%i in (d:\数据\*.txt) do (
- (for /f "usebackq delims=" %%a in ("%%i") do (
- set "str=%%a"&call :split
- if !n! geq 8 echo,%%a
- set/a n=0
- )) >%temp%\$
- move /y "%temp%\$" "%%i" >nul
- )
- pause
-
- :split
- if not "!str!"=="" (
- set "str=!str:~1!"&set/a n+=1&goto split
- ) else (
- goto :eof
- )
复制代码
作者: pcl_test 时间: 2015-2-23 11:15
回复 1# 思想之翼 - @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\数据\"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- for /f "delims=" %%b in ('type "%%a"') do (
- set "str=%%b"
- if "!str:~7,1!" == "" >>$ echo,!str!
- )
- move $ "%%a"
- )
- pause
复制代码
作者: CrLf 时间: 2015-2-23 11:29
这样比较省事- @findstr /v "[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" a.txt >b.txt
复制代码
作者: c755731262 时间: 2015-2-23 20:48
- @echo off&color f0&setlocal enabledelayedexpansion
- cd /d d:\数据\
- for /f "delims=" %%a in ('dir /b *.txt') do (
- (for /f "delims=" %%i in (%%a) do (
- set n=%%i
- for /l %%j in (0,1,20) do (
- if "!n:~%%j,1!" neq "" set /a m+=1
- )
- if !m! lss 8 echo %%i
- set m=0
- )
- )>$
- del /q /f %%a
- ren $ %%a
- )
复制代码
回复 1# 思想之翼
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |