Board logo

标题: [文本处理] [已解决]批处理怎样在txt文本内批量删除一行内只有一个字符及两字符 [打印本页]

作者: shunvcun    时间: 2019-8-12 20:05     标题: [已解决]批处理怎样在txt文本内批量删除一行内只有一个字符及两字符

本帖最后由 shunvcun 于 2019-8-13 14:45 编辑

[attach]12110[/attach]
如上图,有些行只有一个文字,有些行只有两个数字或者两字母,请问各位叔叔们如何将全部只有一个文字的,两个数字的,两个字母,或者一个数字一个字母组成的全部删除
作者: 窄口牛    时间: 2019-8-12 21:30

没有空格的话判断小于二的舍弃即可。
作者: shunvcun    时间: 2019-8-13 04:32

回复 2# 窄口牛
嗯没有空格,请问大神代码怎么写啊
作者: 窄口牛    时间: 2019-8-13 07:32

你搜搜怎么统计获取到的字符个数,我也不会写,只是知道这个思路应该行得通。
作者: Batcher    时间: 2019-8-13 08:40

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f %%i in ('type "用户名.txt"') do (
  4.     for /f "skip=1 delims=:" %%a in ('^(echo "%%i"^&echo.^)^|findstr /o ".*"') do (
  5.         set /a StrLen=%%a-5
  6.     )
  7.     if !StrLen! gtr 2 (
  8.         echo,%%i
  9.     )
  10. ))>"结果.txt"
复制代码

作者: /zhqsystem/zhq    时间: 2019-8-13 14:12

for /f "delims=" %%i in ('Type "UserName.txt"')do (
set "#=%%i"&&set "$="&&if /i not "!#:~2!"=="" set "$=true"
if defined $ (
  echo,写入:%%i
)else (
  echo,过滤:%%i
)
)
作者: shunvcun    时间: 2019-8-13 14:43

回复 5# Batcher


    感谢祝贵站办得越来越好,给我们办公小白带来了办公便利
作者: shunvcun    时间: 2019-8-13 14:59

回复 6# /zhqsystem/zhq


   这个运行速度非常快但是没有效果
作者: Batcher    时间: 2019-8-13 15:17

回复 6# /zhqsystem/zhq


哪部分代码可以实现删除1个汉字的行且保留2个汉字的行?
作者: /zhqsystem/zhq    时间: 2019-8-13 20:03

回复 9# Batcher
变量判断那行,标题是保留3个字符的行过滤2个及其以下的行
作者: Batcher    时间: 2019-8-13 20:19

回复 10# /zhqsystem/zhq


    根据截图以及描述,那不是楼主真正需要的。
作者: /zhqsystem/zhq    时间: 2019-8-13 23:47

这个比管理的慢好多,for调用次数太多了满足俩就调用1406次.....
  1. @Echo Off&Color 0e
  2. SetLocal EnableDelayedExpansion
  3. call:1
  4. for /f "delims=" %%i in ('Type "UserName.txt"')do (
  5. set "全局字符=%%i"
  6. set "全局字符后=!全局字符:~2!"
  7. set "全局字符前=!全局字符:~0,2!"
  8. set "始终保留="
  9. set "过滤数字和字母="
  10. set "过滤非数字和字母="
  11. if not "!全局字符:~2,1!"=="" set "始终保留=true"
  12. if "!全局字符:~2,1!"=="" for /l %%n in (1,1,!n!)do if defined data%%n (
  13.   if /i "!全局字符:~0,1!"=="!全局字符前!" set "过滤非数字和字母=true"
  14.   if /i "!全局字符:~0,2!"=="!data%%n!" set "过滤数字和字母=true"
  15. )
  16. rem 下一行用于回显值可删除
  17. rem call:0
  18. if defined 始终保留 (
  19.   echo,写入:%%i
  20. )else (
  21.   if not defined 过滤非数字和字母 if not defined 过滤数字和字母 echo,写入:%%i
  22. )
  23. )
  24. pause
  25. goto:eof
  26. :0
  27. echo/
  28. echo,始终保留 !始终保留!
  29. echo,过滤数字和字母 !过滤数字和字母!
  30. echo,过滤非数字和字母 !过滤非数字和字母!
  31. echo,原始文件 !全局字符!
  32. goto:eof
  33. :1
  34. set "n=0"
  35. for /l %%n in (0,1,9)do for %%l in (a b c d e f g h i j k l m n o p q r s t u v w s x y z)do set/a "n+=1"&&set "data!n!=%%n%%l"&&set/a "n+=1"&&set "data!n!=%%l%%n"
  36. for /l %%n in (0,1,9)do set/a "n+=1"&&set "data!n!=%%n"&&for /l %%l in (0,1,9)do set/a "n+=1"&&set "data!n!=%%l%%n"
  37. for %%l in (a b c d e f g h i j k l m n o p q r s t u v w s x y z)do set/a "n+=1"&&set "data!n!=%%l"&&for %%n in (a b c d e f g h i j k l m n o p q r s t u v w s x y z)do set/a "n+=1"&&set "data!n!=%%l%%n"
  38. goto:eof
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2