Извлечь домен подуровня из списка с полными адресами доменов? - PullRequest
0 голосов
/ 27 сентября 2018

Привет всем,

Используя 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

Помимо поиска / просмотра и пробования чужого кода, я пытался выполнять цикл FOR / F / перебирать''периоды, и надеялся, что я мог бы просто сделать это в обратном / обратном порядке поиска.Но чем больше (неудачных) попыток я предпринимаю и чем дольше я об этом думаю, тем более невозможным кажется это осуществить (или, по крайней мере, для меня).

Я очень хорошо понимаю, что есть гораздо лучшие решения (сценариев / языков программирования) для достижения этой цели, но означает ли это, что это невозможно сделать с помощью чистого cmd / batch?Я не уверен!

Давайте узнаем ...?

(я знаю, что это может помочь опубликовать какой-то реальный код, но я довольноуверен, что это будет выглядеть как полный беспорядок / шутка, оставив в стороне тот факт, что это также смутило бы меня ... хотя я рад учиться у других!)

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Теперь оператор FOR подходит для вашей цели и может использоваться в следующем примере, где delims=. позволит оператору игнорировать эти символы в виде пробелов:

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

Используяtokens=1* или tokens=1,* вы обработаете первый токен и 2-й + все последующие предметы.Более подробная информация о 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 за напоминание о расширенном использовании системы токенов в выражениях.Надеюсь, я смогу хоть немного рассказать вам о процессе.

0 голосов
/ 27 сентября 2018

Это работает в командной строке: for /f "tokens=1,* delims=." %a in ("%_FQDN_%") do set _secondLevel_=%b.Удвойте символы% в командном файле.Поскольку вы не удосужились опубликовать MCVE, я предоставлю вам возможность выяснить, как должен выглядеть командный файл.

...