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

[文本处理] [已解决]请教如何使用批处理把文本a.txt里数组过滤后输出到b.txt

[复制链接]
发表于 2019-10-24 11:04:58 | 显示全部楼层 |阅读模式
本帖最后由 wxyz0001 于 2019-10-25 21:10 编辑

请教如何使用批处理把文本a.txt里数组过滤后输出到b.txt

问题如下:
a.txt里的数据如下:
02,03,12,31,33
02,03,15,26,35
02,03,19,23,34
02,03,16,24,33
02,04,19,26,30
02,03,20,23,33
02,04,20,25,31
02,06,21,24,32
02,07,08,31,33
02,08,20,25,26
03,08,19,20,31
03,08,19,25,26
03,08,22,24,25

过滤条件如下:
a.txt里有3个偶数以上的一组输出到b.txt里
输出结果为
02,03,16,24,33
02,04,19,26,30
02,04,20,25,31
02,06,21,24,32
02,08,20,25,26
03,08,22,24,25



谢谢bat-flashercs
===========================================
@echo off
setlocal EnableDelayedExpansion
set "file1=a.txt"
set "file2=b.txt"

cd /d "%~dp0"
(
  for /f "usebackq delims=" %%A in ("%file1%") do (
    set ctr=0
    for %%B in (%%~A) do (
      set /a "t=1%%B&1"
      if !t! equ 0 set /a "ctr+=1"
    )
    if !ctr! geq 3 echo %%A
  )
)>"%file2%"
endlocal
pause
exit /b

===========================================
我作了下修改,这样比较容易理解
@echo off
setlocal EnableDelayedExpansion
  for /f "delims=" %%a in (a.txt) do (
    set ctr=0
    for %%b in (%%a) do (
      set /a "t=1%%b&1"
      if !t! equ 0 set /a ctr+=1
    )
    if !ctr! geq 3 echo %%a>>b.txt
  )
pause
===========================================
发表于 2019-10-24 15:25:48 | 显示全部楼层
用 ps 的话 so easy
发表于 2019-10-24 22:24:26 | 显示全部楼层
本帖最后由 WHY 于 2019-10-25 11:44 编辑

大于 3 个偶数
  1. type a.txt | ?{ ($_ -split '(?<=[02468])(?=,|$)').Count -ge 4 } | sc b.txt
复制代码
大于 3 个 16 的数
  1. type a.txt | ?{ ($_ -split '(?<=1[789]|[2-9]\d|[1-9]\d\d\d*)(?=,|$)').Count -ge 4 } | sc c.txt
复制代码
 楼主| 发表于 2019-10-25 00:33:35 | 显示全部楼层
回复 3# WHY
谢谢回复,不过我只想要简单点的批处理写出来的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 11:25 , Processed in 0.018372 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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