根据楼上的分析,得到如下代码:- @echo off
- md tmp 2>nul
- setlocal enabledelayedexpansion
-
- for /f %%i in ('dir /a-d /b .\config\*.txt') do (
- findstr /ig:".\config\%%i" ip.txt>.\tmp\%%~niIP.txt
- )
-
- md result 2>nul
-
- :: 整理省份IP数据
- :: “省-市(州/地区)”、“省-市(州/地区)-县”格式的取到市/州/地区;
- :: “省-县(市)”格式的取到县/市;
- :: 若按前面的规则取到的最后一级地名为单字的,考虑到单名难以确定地名,将直接取省名
- :: 需要处理类似“云南省楚雄州楚雄市”这样的地名
- (for /f "tokens=1-3" %%i in (.\tmp\省IP.txt) do (
- for /f "delims=省市县 tokens=1,2" %%x in ("%%k") do (
- if "%%y"=="" (
- echo %%x - %%i %%j
- ) else (
- set city=%%y
- if not "!city:~2!"=="" (
- for /f "delims=州" %%a in ("!city!") do set city=%%a
- )
- set city=!city:地区=!
- if "!city:~1!"=="" (
- echo %%x - %%i %%j
- ) else (
- echo %%x !city! %%i %%j
- )
- )
- )
- ))>.\result\省IP整理结果.txt
-
- :: 整理自治区IP数据
- :: “自治区-市(州/盟/地区)”、“自治区-市(州/盟/地区)-县(旗/市)”格式的取到市/州/盟/地区;
- :: “自治区-县(旗/市)”格式的取到县/旗/市;
- :: 若按前面的规则取到的最后一级地名为单字的,考虑到单名难以确定地名,将直接取省名
- :: 需要处理类似“云南省楚雄州楚雄市”这样的地名
- (for /f %%i in (.\config\自治区.txt) do (
- for /f "tokens=1-3" %%x in ('findstr /i "%%i" .\tmp\自治区IP.txt') do (
- set city=%%z
- set city=!city:%%i=!
- if "!city!"=="" (
- echo %%i - %%x %%y
- ) else (
- for /f "delims=市盟县旗 tokens=1,2" %%a in ("!city!") do (
- set city=%%a
- if not "!city:~2!"=="" (
- for /f "delims=州" %%m in ("!city!") do set city=%%m
- )
- set city=!city:地区=!
- if "!city:~1!"=="" (
- echo %%i - %%x %%y
- ) else (
- echo %%i !city! %%x %%y
- )
- )
- )
- )
- ))>.\result\自治区IP整理结果.txt
-
- :: 整理直辖市IP数据
- (for /f %%i in (.\config\直辖市.txt) do (
- set city=%%i
- set city=!city:~0,-1!
- for /f "tokens=1,2" %%x in ('findstr /i "%%i" .\tmp\直辖市IP.txt') do (
- echo !city! !city! %%x %%y
- )
- ))>.\result\直辖市IP整理结果.txt
-
- :: 整理香港和澳门IP数据
- (for %%i in (香港 澳门) do (
- for /f "tokens=1,2" %%x in (.\tmp\特别行政区IP.txt) do (
- echo %%i %%i %%x %%y
- )
- ))>.\result\特别行政区IP整理结果.txt
-
- :: 整理那些仅指明为"中国"的IP数据
- (for /f "tokens=1-2" %%i in ('findstr /i " 中国 " ip.txt') do (
- echo 中国 中国 %%i %%j
- ))>.\result\中国IP整理结果.txt
- pause
复制代码 需要把附件解压后的config目录放到当前目录下使用,纯真IP数据库释放后请重命名为ip.txt,必须放在当前目录下,最终处理结果放在result目录下。
存在的问题:在“自治区IP整理结果.txt”中,“内蒙古农业大学”和“新疆大学软件学院机房A区”之类的字段将直接显示去掉自治区名后的字符串,这是因为该字段中没有包含行政区划的关键字用于切分行政区划,虽然可以通过代码予以准确处理,但考虑到效率,还是手工替换为佳。
由于只做了初步核对,其他问题暂未发现。
不知道大家还有没有其他处理方案。
链接: https://pan.baidu.com/s/16OQbRLrS2JIVofVqF9PxTQ?pwd=668r |