PDA

Показать полную графическую версию : Разбор файла .txt с помощью .bat


Armsinglom
30-01-2020, 14:52
Добрый день.
Помогите написать батник, который бы искал в файле hosts.txt строки где содержаться bc1 или BC1 или bc2 и т.д. и удалял бы все из этого файла кроме IP адресов . Т.е. что бы столовался в итоге чистый файл в котором будут только IP (в столбик). пример файла hosts я приложил.

Armsinglom
30-01-2020, 14:55
IP строк в которых не было bc1 или BC1 или bc2 удалять.

DJ Mogarych
30-01-2020, 15:09
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
Блин как все просто оказалось.

Armsinglom
30-01-2020, 21:05
Подскажите еще, как можно организовать вот это процесс более правильно.
Вообщем суть такая:
Устанавливаю подключение с машиной
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
Armsinglom, проблема-то у Вас в чём? Или с чем?

Armsinglom
30-01-2020, 21:49
Заставить это работать с пулом IP, то есть поочередно скачивать файлы hosts с разных машин, и все схлопывать это в один файл.

Iska
30-01-2020, 22:09
и все схлопывать это в один файл. »
В какой момент «схлопывать»?

DJ Mogarych
30-01-2020, 22:34
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
Я имею ввиду как не плодить вот это:
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 из списка. И еще проблема в том что они скачиваются с одинаковым именем, и если в папке есть файл с таким же именем, то он его заменяет.




© OSzone.net 2001-2012