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

[文本处理] 批处理BAT如何截取数字排序并排重?

1.txt的文本,内有数字,都是用空格隔开的,我只取第三块和第四块的数据
用的是for命令,第三块数据是%%i 第四块的数据是%%J
然后后面跟的是命令,比如
dir %%i
dir %%J

这些都没有问题,问题是数据中有相同的,希望排重,如果可以最好按大小排序。
%%i和%%J其本身的数据就是按大小排列的,但是两组数据在一起就不一定了。
比如
4      5
6      8
15    14

都是数字,没有其它字符。

本帖最后由 terse 于 2014-5-6 13:11 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2-3" %%i in (1.txt) do (
  3.     set/a $%%i=%%i+1,#%%i=%%i-1,$%%j=%%j+1,#%%j=%%j-1,f=0
  4.     for %%a in (%%i %%j) do (
  5.         for %%b in (%%a !$%%a! !#%%a!) do if defined _%%b set f=1
  6.         if !f! == 0 echo dir %%a
  7.         set /a _%%a=_!#%%a!=_!$%%a!=f=0
  8.     )
  9. )
  10. pause
复制代码

TOP

dir 235
dir 107780084
dir 107780085
dir 312576704

感谢,少了一个数字,少了107780148  ,另外,相邻的书是否也可以排除掉,比如107780084、107780085
只保留107780084,如果这个不好实现,那么把原来的处理好也可以。

TOP

  1. @echo off
  2. for /f "tokens=2-3" %%i in (1.txt) do (
  3.     if not defined 2_%%i (
  4.         if not defined 3_%%j (
  5.             echo dir %%i
  6.             echo dir %%j
  7.             set 3_%%j=1
  8.         ) else (
  9.             set 2_%%i=1
  10.         )
  11.     )
  12. )
  13. pause
复制代码

TOP

我把二楼的问题删除了,只看一楼的就可以,文本样本类似这样,第二列和第三列是需要处理的数据,就上面的数据来说312576704就是重复的,有两个。

TOP

00                   235       107780084
01        107780085       312576704
02        107780148       312576704

TOP

看不太懂,建议提供处理前后样本,量不要大,有代表性即可

TOP

本帖最后由 freesoft00 于 2014-5-5 20:20 编辑

kkkkkkkkkkkkkkkkkk这里的问题删除掉了。

TOP

返回列表