Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Разбор файла .txt с помощью .bat (http://forum.oszone.net/showthread.php?t=343877)

Armsinglom 30-01-2020 14:52 2907644

Разбор файла .txt с помощью .bat
 
Вложений: 1
Добрый день.
Помогите написать батник, который бы искал в файле hosts.txt строки где содержаться bc1 или BC1 или bc2 и т.д. и удалял бы все из этого файла кроме IP адресов . Т.е. что бы столовался в итоге чистый файл в котором будут только IP (в столбик). пример файла hosts я приложил.

Armsinglom 30-01-2020 14:55 2907645

IP строк в которых не было bc1 или BC1 или bc2 удалять.

DJ Mogarych 30-01-2020 15:09 2907647

Powershell:
Код:

(gc D:\temp\hosts.txt) -match 'bc\d' -replace '\s.*'
"Батник" из него:
Код:

powershell -command "(gc D:\temp\hosts.txt) -match 'bc\d' -replace '\s.*'"

Armsinglom 30-01-2020 16:09 2907656

Блин как все просто оказалось.

Armsinglom 30-01-2020 21:05 2907693

Подскажите еще, как можно организовать вот это процесс более правильно.
Вообщем суть такая:
Устанавливаю подключение с машиной
Код:

WinSCP.exe scp://admin:123456@172.33.28.4:22 /hostkey="*" /console /script=U:\questionable\inventascript\test\scrpt.txt
скачиваю файл(содержание scrpt.txt):
Код:

cd /etc
lcd U:\questionable\inventascript\test
get hosts
exit

Переименовываю hosts в hosts.txt
Код:

rename hosts hosts.txt
Далее его обрабатываю:
Код:

(gc U:\questionable\inventascript\test\hosts.txt) -match 'bc\d' -replace '\s.*'|sort -Unique|Out-File 'U:\questionable\inventascript\test\hosts2.txt'
На выходе получаю файлик hosts2.txt и он прекрасен.

В рамках одной машины и одного файла hosts все работает прекрасно, а как быть если машин 50 штук и в итоге я должен получить один файлик hosts.txt где будут собраны все отобранные IP.

Iska 30-01-2020 21:18 2907694

Armsinglom, проблема-то у Вас в чём? Или с чем?

Armsinglom 30-01-2020 21:49 2907698

Заставить это работать с пулом IP, то есть поочередно скачивать файлы hosts с разных машин, и все схлопывать это в один файл.

Iska 30-01-2020 22:09 2907701

Цитата:

Цитата Armsinglom
и все схлопывать это в один файл. »

В какой момент «схлопывать»?

DJ Mogarych 30-01-2020 22:34 2907704

Armsinglom, скачайте все файлы hosts со всех машин под разными именами, положите в каталог, затем просто
Код:

(gc U:\questionable\inventascript\test\*.txt) -match 'bc\d' -replace '\s.*'|sort -Unique|Out-File 'U:\questionable\inventascript\test\hosts-all.txt'

Armsinglom 30-01-2020 23:27 2907710

Я имею ввиду как не плодить вот это:
Код:

WinSCP.exe scp://admin:123456@172.33.28.4:22 /hostkey="*" /console /script=U:\questionable\inventascript\test\scrpt.txt
Код:

WinSCP.exe scp://admin:123456@172.33.28.5:22 /hostkey="*" /console /script=U:\questionable\inventascript\test\scrpt.txt
Код:

WinSCP.exe scp://admin:123456@172.33.28.6:22 /hostkey="*" /console /script=U:\questionable\inventascript\test\scrpt.txt
А как то подставлять IP из списка. И еще проблема в том что они скачиваются с одинаковым именем, и если в папке есть файл с таким же именем, то он его заменяет.


Время: 08:09.

Время: 08:09.
© OSzone.net 2001-