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

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

假设 a.txt 文本有多行,把每行中等于8个字符的字符串提取出来,其他行过滤掉。
示例文本 a.txt
  1. 12345678 abc cde
  2. 批处理之家
  3. 一二三四五六七八  abcdefgh
  4. 新手练功区欢迎大家
复制代码

@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

TOP

@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

TOP

  1. $file=1.txt
  2. get-content $file|foreach{
  3.     foreach ($s in $_.split()) {
  4.     if ($s.length -eq 8) {$s}
  5.     }
  6. }
复制代码
powershell

TOP

回复 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
复制代码

TOP

  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]
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

  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. pause
复制代码

TOP

@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

TOP

写个试试

  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
复制代码

TOP

回复 1楼 的帖子

请问一行中只有一个字符串,还是可以有多个字符串呢?例如:
12345678  abcdefgh   1254 iiuessss
这样可以吗??

TOP

如果是出题帖,建议在标题中明确写清楚,以免引起不必要的误会,望楼主理解。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表