根据楼上的分析,得到如下代码: | @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 | | pauseCOPY |
需要把附件解压后的config目录放到当前目录下使用,纯真IP数据库释放后请重命名为ip.txt,必须放在当前目录下,最终处理结果放在result目录下。
存在的问题:在“自治区IP整理结果.txt”中,“内蒙古农业大学”和“新疆大学软件学院机房A区”之类的字段将直接显示去掉自治区名后的字符串,这是因为该字段中没有包含行政区划的关键字用于切分行政区划,虽然可以通过代码予以准确处理,但考虑到效率,还是手工替换为佳。
由于只做了初步核对,其他问题暂未发现。
不知道大家还有没有其他处理方案。
链接: https://pan.baidu.com/s/16OQbRLrS2JIVofVqF9PxTQ?pwd=668r |