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

Extract sublevel domain from a list with Fully Qualified Domain Name addresses?

大家好,

使用 CMD/batch 我正在尝试从包含完全限定域名地址的自编译 (.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

除了 searched/looked 通过并尝试过其他人的代码之外,我还尝试通过 '.' FOR /F loop/iterate期间,并希望我可以简单地按照 reverse/backwards 搜索顺序执行此操作。但是,我尝试的次数越多(失败)越多,我考虑的时间越长,就越不可能(或至少对我而言)实现它。

我很清楚有更好的解决方案(scripting/programming 语言)可以实现这一点,但这是否也意味着不可能使用纯 cmd/batch 来做这样的事情?我不确定!

让我们看看...?

(我知道它可以帮助 post 一些实际代码,但我很确定它看起来像一个完整的 mess/joke,抛开它也会令人尴尬的事实我...不过我很乐意向别人学习!)

这适用于命令行:for /f "tokens=1,* delims=." %a in ("%_FQDN_%") do set _secondLevel_=%b。将批处理文件中的“%”符号加倍。由于您懒得 post MCVE,我将留给您来确定批处理文件的外观。

现在 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 提醒我在报表中对令牌系统的高级使用。希望我至少可以在这个过程中教育你。