标题: [文本处理] 批处理怎样排序IP地址? [打印本页]
作者: 冷玉公子 时间: 2011-9-7 15:05 标题: 批处理怎样排序IP地址?
例如文本a.txt中的IP地址为:- 192.168.1.45
- 192.168.1.65
- 192.168.1.2
- 192.168.1.106
- 192.168.1.38
- 192.168.1.26
- 192.168.1.89
- 192.168.1.76
- 192.168.1.235
复制代码
按照顺序排列出来如下- 192.168.1.2
- 192.168.1.26
- 192.168.1.38
- 192.168.1.45
- 192.168.1.65
- 192.168.1.76
- 192.168.1.89
- 192.168.1.106
- 192.168.1.235
复制代码
作者: dennisle 时间: 2011-9-7 16:21
請至下列網址下載 sort.exe
http://bbs.bathome.net/thread-1114-1-1.html复制代码
作者: 冷玉公子 时间: 2011-9-7 16:35
忘记说明了,不能使用第三方程序。
作者: lxzzr 时间: 2011-9-7 16:54
回复 3# 冷玉公子
sort.exe不是系统自带的么?
作者: wc726842270 时间: 2011-9-7 17:10
LZ要求的可不是ASC排序或DESC排序啊,如果是笔误的话,而且十分想用CMD自带的命令的话,那就用SET吧
作者: 冷玉公子 时间: 2011-9-7 17:13
sort.exe 是系统自带命令 但是那个命令没有搞定的
作者: 冷玉公子 时间: 2011-9-7 18:09
发一个方法
作者: 冷玉公子 时间: 2011-9-7 18:11
- @Echo Off&Setlocal Enabledelayedexpansion
- For /l %%q in (1,1,255) do (
- For /f "delims=. tokens=1-4" %%a in (1.txt) do (
- If %%q==%%d echo %%a.%%b.%%c.%%q
- )
- )
- pause>nul
复制代码
作者: wc726842270 时间: 2011-9-7 18:40
无聊中,来一个- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=4 delims=." %%i in (1.txt) do (
- set a=--%%i
- echo !a:~-3!
- )
- )>tmp.txt
- for /f "tokens=1 delims=-" %%i in ('sort tmp.txt') do echo %%i
- pause
复制代码
作者: wc726842270 时间: 2011-9-7 18:44
在排版方面,Discuz!7.2不如以前的,
作者: Batcher 时间: 2011-9-7 18:47
回复 10# wc726842270
具体是排版的哪个方面呢?
作者: wc726842270 时间: 2011-9-7 18:54
本帖最后由 wc726842270 于 2011-9-7 18:55 编辑
回复 11# Batcher
呵呵,老大不用在意,是我的问题
作者: 冷玉公子 时间: 2011-9-9 07:45
补齐9喽的命令- @Echo off&SetLocal EnableDelayedExpansion
- (For /f "tokens=1,2,3,4 delims=." %%a in (1.txt) do (
- set a=--%%d
- echo %%a.%%b.%%c.!a:~-3!
- )
- )>tmp.txt
- For /f "tokens=1,2 delims=-" %%a in ('Sort tmp.txt') do @Echo %%a%%b
- pause
复制代码
作者: wc726842270 时间: 2011-9-9 09:16
如果前面是一样的话就“echo 192.168.1.%%i”吧
作者: 冷玉公子 时间: 2011-9-9 10:25
14楼的兄台在开玩笑吧。你的叫输出不叫排序哦- @Echo Off&SetLocal EnableDelayedExpansion
- Set /P Var_Filepach=请讲要处理的文件,拖入此框中。
- For /f %%a in (%Var_Filepach%) do (
- Set /a NumValue+=1
- Set "StrLine!NumValue!=%%a"
- )
- For /l %%z in (1,1,%NumValue%) do (
- For /l %%a in (1,1,%NumValue%) do (
- For /f "tokens=* delims=." %%b in ("!StrLine%%a!") do Set StrLineNumValueA=%%b
- Set "Var_Stepvalue=%%a"
- Set /a Var_Stepvalue+=1
- If !Var_Stepvalue! GEQ %NumValue% Set Var_Stepvalue=%NumValue%
- Echo !Var_Stepvalue! > %Temp%\Temp
- For /f %%b in (%Temp%\Temp) do (
- For /f "tokens=* delims=." %%b in ("!StrLine%%b!") do Set StrLineNumValueB=%%b
- If !StrLineNumValueA! GTR !StrLineNumValueB! (
- Set "StrLineT=!StrLine%%a!"
- Set "StrLine%%a=!StrLine%%b!"
- Set "StrLine%%b=!StrLineT!"
- )
- )
- )
- )
- For /l %%a in (1,1,%NumValue%) do (
- Echo !StrLine%%a!
- )
- Pause
复制代码
作者: pcl_test 时间: 2016-9-5 18:22
本帖最后由 pcl_test 于 2016-11-10 14:22 编辑
- @echo off&setlocal enabledelayedexpansion
- %1(for /f "tokens=2 delims==" %%a in ('"%~f0" ::^|sort') do echo;%%a)&pause&exit
- for /f "tokens=1-4 delims=." %%a in ('type "ip.txt"') do (
- set /a "a=100+%%a,b=100%%b,c=100+%%c,d=100+%%d"
- echo;!a!!b!!c!!d!=%%a.%%b.%%c.%%d
- )
复制代码
- rem win7及以上系统运行
- powershell -c "gc 'ip.txt'|sort {$a=$_.trim().split('.');'{0:d3}{1:d3}{2:d3}{3:d3}' -f (1*$a[0]),(1*$a[1]),(1*$a[2]),(1*$a[3])}"
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |