从具有完全限定域名地址的列表中提取子域?

时间:2018-09-26 23:23:38

标签: string batch-file cmd scripting extract

大家好,

我正在使用CMD /批处理从其中具有完全合格域名地址的自编译(.txt)文档中提取子级(或二级)域。

示例

FQDN address: www.somethingfunny.com
What i want : somethingfunny.com

FQDN address: something.funny.com
What i want : funny.com

FQDN address: www.somethingfunny.co.uk
What i want : somethingfunny.co.uk

除了搜索/浏览并尝试了其他人的代码外,我还尝试了FOR / F循环/迭代“。”。期,并希望我可以按反向/向后搜索顺序简单地执行此操作。但是,我尝试的次数(失败的次数)越多,思考的时间越长,似乎越不可能(或至少对我来说)。

我很清楚有更好的解决方案(脚本/编程语言)可以实现这一目标,但这是否也意味着不可能使用纯cmd / batch来做到这一点?我不确定!

让我们发现...?

(我知道发布一些实际的代码可能会有帮助,但是我敢肯定,它看起来像是一个完整的烂摊子/开玩笑,抛开一个事实,这也会让我感到尴尬...我很高兴向别人学习!)

2 个答案:

答案 0 :(得分:2)

这可在以下命令行中使用:for /f "tokens=1,* delims=." %a in ("%_FQDN_%") do set _secondLevel_=%b。将批处理文件中的'%'符号加倍。由于您不必费心发布MCVE,因此我将留给您确定批处理文件的外观。

答案 1 :(得分:2)

现在,一个FOR语句很适合您的目的,并且可以在下面的示例中使用,其中delims=.将允许该语句将那些字符忽略为空格:

FOR /F "tokens=1,2 delims=." %%G IN ("www.somethingfunny.com") do ECHO %%G %%H

通过使用tokens=1*tokens=1,*,您将处理第一个令牌和第二个+所有后续项。有关ss64的更多信息。

@ECHO OFF

rem | Configure directories
set "input=C:\Users\Dan\Desktop\List.txt"
set "output=C:\Users\Dan\Desktop\new.txt"

rem | Loop through textfile and save to %output%
for /f "tokens=1,* delims=." %%a in ('type "%input%"') do (echo %%b >> %output%)

goto :EOF

如果有什么功劳jwdonahue可以提醒我在语句中对令牌系统的高级使用。希望我至少可以对您进行培训。