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

[文本处理] 批处理BAT如何在一堆URL中提取其每行的一级域名?

[复制链接]
发表于 2014-2-19 00:50:08 | 显示全部楼层
判断结尾后六个字符的长度
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     setlocal enabledelayedexpansion
  5.     set str=!str:http://= !
  6.     for %%a in (!str!) do (
  7.         for /f "delims=/" %%b in ("%%a") do set str=%%b
  8.         for /f %%b in ("!str!") do (
  9.             for /f %%c in ("!str:.=\!\..") do set s=%%~nc%%~xb&set "str=%%~nb"
  10.             if "!s:~6!" == "" for /f %%d in ("!str:.=\!\..") do (
  11.                if "%%~nd" neq "" set s=%%~nd.!s!
  12.             )
  13.             echo !s!
  14.         )
  15.     )
  16.     endlocal
  17. )
  18. pause
复制代码
发表于 2014-2-19 07:48:33 | 显示全部楼层
回复 15# 封印


    你把没有成功提取的贴出来,也许可以变成绝对完美。
 楼主| 发表于 2014-2-19 14:24:48 | 显示全部楼层
回复 14# xxpinqz


    朋友,还能再改一下吗?
后面两字符的,取三组的话。那像ABC.DEF.CN这类型取出来就是二级域名了。
分两种情况,比如一种是ABC.DEF.GH.IJ这类型,后缀是GH.IJ
一种是ABC.DEF.IJ这类型后缀是IJ
按照特征来看的话,后缀圆点左右各两字符的取三组。后缀圆点右边两字符的,取两组就可以了。
看看怎么样?
 楼主| 发表于 2014-2-19 15:03:40 | 显示全部楼层
回复 16# terse


    运行完后,没有生成整理后的文本啊。
发表于 2014-2-19 15:11:32 | 显示全部楼层
回复 19# 封印


    你自己加个重定向就行了啊
 楼主| 发表于 2014-2-19 16:00:22 | 显示全部楼层
回复 20# DAIC


    嗯,加好了,效果更完美了。
只是这代码FOR这么多层,对我来说好难理清啊。要是能注释一下,就更好了
向你学习
发表于 2014-2-19 16:53:10 | 显示全部楼层
回复 19# 封印
将第二行至第十七行括起来 然后重定向到B.TXT
  1. (这里是第二行至第十七行代码)>b.txt
复制代码
发表于 2014-2-20 12:38:10 | 显示全部楼层
回复 18# 封印
如此:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1* delims=:" %%a in (a.txt) do (
  3.     set "str=%%b"
  4.     set "str=!str::= !"
  5.     for %%i in (!str!) do (
  6.         for /f "delims=/" %%a in ("%%i") do (
  7.             set "str=%%a"
  8.             set "str=!str:.= !"
  9.             set m=0
  10.             set "tmp="
  11.             for %%a in (!str!) do (
  12.                 set/a m+=1
  13.                 set ".=!tmp!"
  14.                 set "#!m!=%%a."
  15.                 set "tmp=%%a"               
  16.             )
  17.             if "!.:~2!"=="" (set/a n=m-2) else set/a n=m-1
  18.             set "e="
  19.             for /l %%a in (!n!,1,!m!) do set "e=!e!!#%%a!"
  20.             echo,!e:~,-1!
  21.         )               
  22.     )
  23. ))>b.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 02:07 , Processed in 0.013351 second(s), 13 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表