找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23445|回复: 10

批处理把每行中等于8个字符的字符串提取出来

[复制链接]
发表于 2009-6-6 21:16:54 | 显示全部楼层 |阅读模式
假设 a.txt 文本有多行,把每行中等于8个字符的字符串提取出来,其他行过滤掉。
示例文本 a.txt
  1. 12345678 abc cde
  2. 批处理之家
  3. 一二三四五六七八  abcdefgh
  4. 新手练功区欢迎大家
复制代码
发表于 2009-6-8 21:17:56 | 显示全部楼层
如果是出题帖,建议在标题中明确写清楚,以免引起不必要的误会,望楼主理解。
发表于 2009-6-11 22:42:50 | 显示全部楼层

回复 1楼 的帖子

请问一行中只有一个字符串,还是可以有多个字符串呢?例如:
12345678  abcdefgh   1254 iiuessss
这样可以吗??
发表于 2009-6-11 23:43:53 | 显示全部楼层

写个试试

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (set str=%%a&if "!str:~7,1!" neq "" if "!str:~8,1!" equ "" echo %%a)
  4. pause>nul
复制代码
发表于 2016-4-27 16:05:54 | 显示全部楼层
@echo off

setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (a.txt) do (
        set y=false
        for %%j in (%%i) do (
                set t=%%j
                if "!y!" equ "false" if "!t:~7,1!" neq "" if "!t:~8,1!"=="" set y=true&echo %%j
        )
       
)

pause
发表于 2016-4-27 16:06:11 | 显示全部楼层

  1. @echo off

  2. setlocal enabledelayedexpansion

  3. for /f "tokens=*" %%i in (a.txt) do (
  4.         set y=false
  5.         for %%j in (%%i) do (
  6.                 set t=%%j
  7.                 if "!y!" equ "false" if "!t:~7,1!" neq "" if "!t:~8,1!"=="" set y=true&echo %%j
  8.         )
  9.        
  10. )

  11. pause
复制代码
发表于 2016-4-27 16:56:01 | 显示全部楼层
  1. """
  2. python3
  3. 2016年4月27日 16:50:03 codegay
  4. """

  5. with open("a.txt") as f:
  6.     [print(x) for r in f for x in r.split() if len(x)==8]
复制代码
发表于 2016-4-27 17:27:13 | 显示全部楼层
回复 6# chencg
  1. :On Error Resume Next
  2. set fso=CreateObject("scripting.filesystemobject")
  3. :Sub bat
  4. echo off&cls
  5. cscript -nologo -e:vbs "%0"
  6. pause
  7. Exit Sub
  8. :End Sub
  9. set RegExp=new RegExp:set stdin=wscript.stdin
  10. RegExp.IgnoreCase=true:RegExp.Global=-1
  11. file="1.txt"
  12. RegExp.Pattern="\b.{8}\b"
  13. var=fso.opentextfile(file).readall
  14. set matches=RegExp.Execute(var)
  15. for each match in matches
  16. wsh.echo match
  17. next
复制代码
发表于 2021-11-30 10:50:14 | 显示全部楼层
  1. $file=1.txt
  2. get-content $file|foreach{
  3.     foreach ($s in $_.split()) {
  4.     if ($s.length -eq 8) {$s}
  5.     }
  6. }
复制代码
powershell
发表于 2022-10-23 20:55:55 | 显示全部楼层
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
        for %%j in (%%i) do (
                set t=%%j
                if "!t:~7,1!" neq "" if "!t:~8,1!"=="" echo %%j
        )
)
pause
发表于 2023-5-5 14:17:26 | 显示全部楼层
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
        set line=%%i
        for %%j in (!line!) do (
                set column=%%j
                set cln8=!column:~7,1!
                set cln9=!column:~8,1!
                if defined cln8 (
                        if not defined cln9 echo %%j
                )
        )
       
)
pause
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:47 , Processed in 0.019556 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表