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

[数值计算] 批处理怎么去除一个固定关系的行?

1.txt
01 02 03 04 05
01 02 03 04 06
01 02 03 04 07
01 02 03 04 08
01 02 03 04 09
01 02 03 04 10
01 02 03 04 11

怎么用一个表达式排除如 %b=%a+1 c%=%b+1 %d=%c+1 %e=%d+1
也就是12345这样的行 23456也是 符合的
应该%b=%a*2 %c=%b*2 %d=%c*2 。。。。
2 4 6 8 10

每次登陆提出问题 也是厚着脸皮 F5 F5 的刷新等着论坛里的大神帮忙
对于一个10年注册的老鸟了吧的尴尬
对于论坛给过我帮助的网友 无以为报 只有诚挚的祝福

TOP

顶楼的 1.txt 处理之后应该变成什么样子?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

是这个意思吗?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-5" %%a in ('type "1.txt"') do (
  4.     set flag=0
  5.     set /a sum1=%%a+1
  6.     set /a sum2=%%b+1
  7.     set /a sum3=%%c+1
  8.     set /a sum4=%%d+1
  9.     if %%b equ !sum1! (
  10.         set /a flag+=1
  11.     )
  12.     if %%c equ !sum2! (
  13.         set /a flag+=1
  14.     )
  15.     if %%d equ !sum3! (
  16.         set /a flag+=1
  17.     )
  18.     if %%e equ !sum4! (
  19.         set /a flag+=1
  20.     )
  21.     if !flag! neq 4 (
  22.         echo %%a %%b %%c %%d %%e
  23.     )
  24. ))>"2.txt"
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# ads350668398

【排除12345】谢谢关注
01 02 03 04 06
01 02 03 04 07
01 02 03 04 08
01 02 03 04 09
01 02 03 04 10
01 02 03 04 11

TOP

本帖最后由 xczxczxcz 于 2019-5-7 17:25 编辑

回复 5# ads350668398

来个通用点的。powershell
  1. powershell
复制代码

TOP

升级版的bat 谢谢关注了

TOP

回复 4# Batcher


奇数-=~%%a%%2
,#偶数+=%%a%%2,
#被三整除+=%%a%%3,
#和+=100,
可以不可以吧这些关系的数字也删除啊??
例如

5 9 13 21 33奇数
2 12 26 28 32 偶数
3 9 18 27 33 北三整除

TOP

回复 8# ads350668398


    我看不懂这些关系表示什么意思。你自己修改一下4楼的代码,把你想要的计算和判断放进去试试,遇到具体问题再回来问。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


01 02 03 04 05 连续1
01 02 03 04 06
01 02 03 04 07
01 02 03 04 08
01 02 03 04 09
01 02 03 04 10
01 02 03 04 11
02 03 04 05 06 连续2
02 04 06 08 10 偶数0
03 06 09 12 15
01 03 05 07 09 奇数1
05 10 15 20 25 整除5
06 09 15 27 33 整除3
01 04 07 10 13
01 05 09 13 17 奇数2
01 06 11 16 21
01 07 13 19 25 奇数3
01 08 15 22 29
01 09 18 26 34
03 11 15 21 23 奇数4
06 10 18 22 28 偶数1
04 06 08 10 12 偶2
06 07 08 09 10 连续3
23 24 25 26 27 连续4
06 10 20 22 28 偶数3
28 29 30 31 32 连续5

我是打算去除这些连续1 2 3 4 5和奇数1 2 3 4 偶数1 2 3
现在连续和偶数基本解决了 虽然很。。。
怎么去除奇数 想不出来了??? 还有被3 5 整除????

------------------------
set flag=0
    set /a sum1=%%a+1
    set /a sum2=%%b+1
    set /a sum3=%%c+1
    set /a sum4=%%d+1
    if %%b equ !sum1! (
        set /a flag+=1
    )
    if %%c equ !sum2! (
        set /a flag+=1
    )
    if %%d equ !sum3! (
        set /a flag+=1
    )
    if %%e equ !sum4! (
        set /a flag+=1
    )
    if !flag! neq 4 (
        echo %%a %%b %%c %%d %%e %%f
可能都不知道我说的是什么但是
06 07 08 09 10 连续 3  失败
这一行在运行的时候也处理不掉 我知道是不是我电脑的毛病啊
******************************
(for /f "tokens=1-28" %%a in ('type "1.txt"') do (
    set flag=0
    set /a sum1=%%a+2
    set /a sum2=%%b+2
    set /a sum3=%%c+2
    set /a sum4=%%d+2
    if %%b equ !sum1! (
        set /a flag+=2
    )
    if %%c equ !sum2! (
        set /a flag+=2
    )
    if %%d equ !sum3! (
        set /a flag+=2
    )
    if %%e equ !sum4! (
        set /a flag+=2
    )
    if !flag! neq 4 (
        echo %%a %%b %%c %%d %%e %%f
    )
))>"2.txt"
set s
set sum1
set sum2
set sum3
set sum4
echo !%a%! %%b %%c %%d %%e
start 2.txt
::ping /n 8 127.0.0.1<nul
taskkill /im 2.txt
pause
结果:
02 04 06 08 10 偶数0 成功
06 10 18 22 28 偶数1 失败
04 06 08 10 12 偶2    成功
06 10 20 22 28 偶数3 失败

TOP

06 07 08 09 10 连续 3  失败

修复这个bug你试试:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-5" %%a in ('type "1.txt"') do (
  4.     set flag=0
  5.     set /a sum1=1%%a+1
  6.     set /a sum2=1%%b+1
  7.     set /a sum3=1%%c+1
  8.     set /a sum4=1%%d+1
  9.     if 1%%b equ !sum1! (
  10.         set /a flag+=1
  11.     )
  12.     if 1%%c equ !sum2! (
  13.         set /a flag+=1
  14.     )
  15.     if 1%%d equ !sum3! (
  16.         set /a flag+=1
  17.     )
  18.     if 1%%e equ !sum4! (
  19.         set /a flag+=1
  20.     )
  21.     if !flag! neq 4 (
  22.         echo %%a %%b %%c %%d %%e
  23.     )
  24. ))>"2.txt"
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

怎么去除奇数 北三被5 我一头雾水 穷尽。。。。

TOP

本帖最后由 ivor 于 2019-5-30 07:56 编辑
  1. @Powershell "& {[ScriptBlock]::Create("'#' + (gc '%~f0' -raw)").Invoke()}" & pause & goto :eof
  2. gc 1.txt | %{[int[]]$arr=$_ -split ' ';
  3. # 过滤递增1
  4. if(!(($arr[0] + 1 -eq $arr[1]) -and ($arr[1] + 1 -eq $arr[2])-and ($arr[2] + 1 -eq $arr[3])-and ($arr[3] + 1 -eq $arr[4]))) {
  5.     # 过滤递增2
  6.     if(!(($arr[0] + 2 -eq $arr[1]) -and ($arr[1] + 2 -eq $arr[2])-and ($arr[2] + 2 -eq $arr[3])-and ($arr[3] + 2 -eq $arr[4]))) {
  7.         # 过滤整除5
  8.         if(!(($arr[0] % 5  -eq 0) -and ($arr[1] % 5  -eq 0)-and ($arr[2] % 5  -eq 0)-and ($arr[3] % 5  -eq 0)-and ($arr[4] % 5  -eq 0))) {
  9.             # 过滤整除3
  10.             if(!(($arr[0] % 3  -eq 0) -and ($arr[1] % 3  -eq 0)-and ($arr[2] % 3  -eq 0)-and ($arr[3] % 3  -eq 0)-and ($arr[4] % 3  -eq 0))) {
  11.                 write $_
  12.             }
  13.         }   
  14.     }
  15. }
  16. }
复制代码

TOP

回复 13# ivor


      用FOR 不是又快又简?如果楼上的数据列数加减变化那不惨了。不过最大可能楼上是用BAT 。不会考虑PS。

TOP

要是规则比较多的话可以试着建一个规则文件来读取,然后批处理里面来解释规则库,然后逐行测试……
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

返回列表