标题: [文本处理] 批处理BAT如何截取数字排序并排重? [打印本页]
作者: freesoft00 时间: 2014-5-5 19:32 标题: 批处理BAT如何截取数字排序并排重?
1.txt的文本,内有数字,都是用空格隔开的,我只取第三块和第四块的数据
用的是for命令,第三块数据是%%i 第四块的数据是%%J
然后后面跟的是命令,比如
dir %%i
dir %%J
这些都没有问题,问题是数据中有相同的,希望排重,如果可以最好按大小排序。
%%i和%%J其本身的数据就是按大小排列的,但是两组数据在一起就不一定了。
比如
4 5
6 8
15 14
都是数字,没有其它字符。
作者: freesoft00 时间: 2014-5-5 19:35
本帖最后由 freesoft00 于 2014-5-5 20:20 编辑
kkkkkkkkkkkkkkkkkk这里的问题删除掉了。
作者: CrLf 时间: 2014-5-5 19:50
看不太懂,建议提供处理前后样本,量不要大,有代表性即可
作者: freesoft00 时间: 2014-5-5 20:23
00 235 107780084
01 107780085 312576704
02 107780148 312576704
作者: freesoft00 时间: 2014-5-5 20:25
我把二楼的问题删除了,只看一楼的就可以,文本样本类似这样,第二列和第三列是需要处理的数据,就上面的数据来说312576704就是重复的,有两个。
作者: DAIC 时间: 2014-5-5 21:11
- @echo off
- for /f "tokens=2-3" %%i in (1.txt) do (
- if not defined 2_%%i (
- if not defined 3_%%j (
- echo dir %%i
- echo dir %%j
- set 3_%%j=1
- ) else (
- set 2_%%i=1
- )
- )
- )
- pause
复制代码
作者: freesoft00 时间: 2014-5-6 10:33
dir 235
dir 107780084
dir 107780085
dir 312576704
感谢,少了一个数字,少了107780148 ,另外,相邻的书是否也可以排除掉,比如107780084、107780085
只保留107780084,如果这个不好实现,那么把原来的处理好也可以。
作者: terse 时间: 2014-5-6 13:07
本帖最后由 terse 于 2014-5-6 13:11 编辑
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=2-3" %%i in (1.txt) do (
- set/a $%%i=%%i+1,#%%i=%%i-1,$%%j=%%j+1,#%%j=%%j-1,f=0
- for %%a in (%%i %%j) do (
- for %%b in (%%a !$%%a! !#%%a!) do if defined _%%b set f=1
- if !f! == 0 echo dir %%a
- set /a _%%a=_!#%%a!=_!$%%a!=f=0
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |