从具有完全限定域名地址的列表中提取子级域?
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 提醒我在报表中对令牌系统的高级使用。希望我至少可以在这个过程中教育你。
大家好,
使用 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 提醒我在报表中对令牌系统的高级使用。希望我至少可以在这个过程中教育你。