批处理之家's Archiver

curious 发表于 2009-6-6 21:16

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

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

Batcher 发表于 2009-6-8 21:17

如果是出题帖,建议在标题中明确写清楚,以免引起不必要的误会,望楼主理解。

sjzong 发表于 2009-6-11 22:42

回复 1楼 的帖子

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

sjzong 发表于 2009-6-11 23:43

写个试试

[code]@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do (set str=%%a&if "!str:~7,1!" neq "" if "!str:~8,1!" equ "" echo %%a)
pause>nul[/code]

chencg 发表于 2016-4-27 16:05

@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

chencg 发表于 2016-4-27 16:06

[code]
@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
[/code]

codegay 发表于 2016-4-27 16:56

[code]"""
python3
2016年4月27日 16:50:03 codegay
"""

with open("a.txt") as f:
    [print(x) for r in f for x in r.split() if len(x)==8]
[/code]

Nsqs 发表于 2016-4-27 17:27

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=185453&ptid=4823]6#[/url] [i]chencg[/i] [/b][code]:On Error Resume Next
set fso=CreateObject("scripting.filesystemobject")
:Sub bat
echo off&cls
cscript -nologo -e:vbs "%0"
pause
Exit Sub
:End Sub
set RegExp=new RegExp:set stdin=wscript.stdin
RegExp.IgnoreCase=true:RegExp.Global=-1
file="1.txt"
RegExp.Pattern="\b.{8}\b"
var=fso.opentextfile(file).readall
set matches=RegExp.Execute(var)
for each match in matches
wsh.echo match
next[/code]

for_flr 发表于 2021-11-30 10:50

[code]$file=1.txt
get-content $file|foreach{
    foreach ($s in $_.split()) {
    if ($s.length -eq 8) {$s}
    }
}[/code]powershell

唯尘 发表于 2022-10-23 20: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

772074834 发表于 2023-5-5 14:17

@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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.