Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файлов с одинаковым именем с разных ПК или с backup архива

Ответить
Настройки темы
CMD/BAT - [решено] Копирование файлов с одинаковым именем с разных ПК или с backup архива

Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток!

Есть несколько ПК. В моем случае их пока 6. На них запущена одна и та же программа. Программа ведет логирование в папку log на каждом ПК.
Все логи на 6-ти ПК имеют одно и тоже название. Кроме того, логи старше нескольких дней перекидываются в backup архив на другой ПК, который служит для хранения логов (Backup).
На Backup логи в архиве хранятся в папке с именем ПК

Т.к. бывает необходимо найти лог с определенным именем на всех ПК или на Backup и собрать их в папку (папка с названием лога) для проверки или передачи:

Прошу помощи в написании bat-ника для поиска файлов с определенным именем (одинаковое имя файла) на разных ПК, а если их в папках на ПК нет, то поиск в backup архивах с этих ПК и извлечении данных файлов в папку с названием лога.
Т.к. данные файлы носят одинаковое имя, то необходимо их нумеровать (имя файла_001, имя файла_002 и т.д.) или же дописывать к имени файла имя ПК.

Отправлено: 13:16, 20-10-2020

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Доброго времени суток! А постановку так и не возможно разъяснить, а не предоставлять собственный нерабочий код, из которого надо еще и постановку вытащить. В соответствии с Вашей постановкой в заголовке, ИМХО, задача решена.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:36, 23-10-2020 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Доброго времени суток! А постановку так и не возможно разъяснить, а не предоставлять собственный нерабочий код, из которого надо еще и постановку вытащить »
Есть 6 серверов на которых крутится одно и тоже ПО.
На всех серверах ведется логирование разных плагинов, модулей и т.д.. Названия этих логов одинаковые для все серверов
например:
2020-10-05.gw.uniroll.log, где 2020-10-05 - дата, gw.uniroll - название модуля.
каждые сутки создается новый лог.

Раз в 3-и дня данные логи, кроме за текущий день сбрасываются на сервер backup в архив с логами (т.е. архив дописывается логами в течении квартала, а затем создается новый архив).

Сейчас в ручном режиме приходится в расшаренной папке на своем ПК создавать папку с названием лога (скажем 2020-10-05.gw.uniroll), заходить на каждый сервер (если лог не старше 3-х дней) или на Backup (в архивы с логами) выбирать там нужный лог (скажем 2020-10-05.gw.uniroll.log) и скидывать их к себе на ПК в созданную папку дописывая к названию каждого условное обозначение сервера, чтобы знать с какого сервера и не затереть предыдущий лог:
2020-10-05.gw.uniroll_001.log, 2020-10-05.gw.uniroll_002.log, 2020-10-05.gw.uniroll_003.log и т.д
Затем это все архивируется с паролем и отправляется по почте инициатору.

Необходимо:
Основная задача:
Когда приходят запросы предоставить лог работы модуля скажем gw.uniroll за 05.10.2020 г., чтобы не лезть на каждый сервер (если запрашиваемый лог не старше 3-х дней) или не лезть на backup в архивы (если лог старше 3-х дней), а при указании в батнике необходимого имени лога, он создавал папку с именем лога производил поиск этого лога на каждом сервере или в архиве с каждого сервера и копировал в созданную папку логи дописывая к имени лога условный номер сервера (001, 002, 003 и т.д.), чтобы знать с какого сервера и не затереть предыдущий скопированный лог.

Если возможно дополнительная задача:
Собрав все логи с серверов или архивов в одну папку произвести архивирование данной папки с паролем (пароль для архива можно тоже, чтобы указывался в батнике).

Отправлено: 18:21, 23-10-2020 | #12


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Постановка задачи
Есть несколько серверов.

Серверы могут идентифицироваться как именами, например: Server1 Server2 ....
так и по IP, например 192.168.1.208 192.168.1.121 192.168.1.15 ...
либо в их комбинации

На каждом сервере имеется доступ к сетевой папке с определённым именем, например Log

На каждом сервере в указанной папке ежедневно создаются файлы имя.log, где хранятся лог-файлы за несколько дней,
например:
\\Server1\Log\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
\\Server2\Log\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
.......
итд.

Более старые файлы перемещаются в другое место в папку с именем сервера-источника, например:
\\Server\Backup\Server1\Log\2020-10-19.gw.uniroll.log ...2020-10-18.gw.uniroll.log ...
\\Server\Backup\Server2\Log\2020-10-19.gw.uniroll.log ...2020-10-18.gw.uniroll.log ...
.......
итд.

Задача: собрать определённый логфайл, например: 2020-10-21.gw.uniroll.log, с разных серверов,
на рабочем компьютере в папке, например: Z:\Box_Out в подпапке с именем лога.
В имя файла с логом добавляется имя сервера:
Z:\Box_Out\2020-10-21.gw.uniroll\2020-10-21.gw.uniroll_Server1.log
... 2020-10-21.gw.uniroll_Server2.log
...............
итд.

В зависимости от даты создания лога, лог может храниться как на конкретном сервере,
так и на сервере бэкапов в соответствующей серверу папке.

Полученную папку заархивировать
Вариант решения - к имени файлов добавляются имена серверов
Код: Выделить весь код
@Echo Off
	Call :Together "2020-10-22.gw.uniroll.log"
Exit /B

:Together
	Set "AllComp=Server1 Server2 Server3 Server4 Server5 Server6"
	Set "LogFolder=Log"

	Set "Backup=\\Server\Backup"
	Set "BoxOut=Z:\Box_Out"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	>nul 2>&1 (For %%c In (%AllComp%) Do (
		Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1" ||(
		Copy "%Backup%\%%c\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1")
	))

	"C:\Program Files\WinRAR\WinRAR.exe" a -ep1 -hpPassword "%BoxOut%\%~nx1.rar" "%BoxOut%\%~n1\*.*"
Exit /B
Вариант с архиватором 7Z
Код: Выделить весь код
	"C:\Program Files\7-Zip\7zG.exe" a -pPassword "%BoxOut%\%~nx1.7Z" "%BoxOut%\%~n1\*.*"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-10-2020 в 14:49.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:24, 23-10-2020 | #13


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Вариант решения - к имени файлов добавляются номера в соответствии с порядком следования имён серверов в списке
Код: Выделить весь код
@Echo Off
	Call :Together "2020-10-17.gw.uniroll.log"
	Call :Together "2020-10-18.gw.uniroll.log"
	Call :Together "2020-10-19.gw.uniroll.log"
	Call :Together "2020-10-20.gw.uniroll.log"
	Call :Together "2020-10-21.gw.uniroll.log"
	Call :Together "2020-10-22.gw.uniroll.log"
Exit /B

:Together
	Set "AllComp=Server1 Server2 Server3 Server4 Server5 Server6"
	Set "LogFolder=Log"

	Set "Backup=\\Server\Backup"
	Set "BoxOut=Z:\Box_Out"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	Set /A N=1000
	>nul 2>&1 (For %%c In (%AllComp%) Do (
		Set /A N+=1
		Call Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%N:~1%%%~x1" ||(
		Call Copy "%Backup%\%%c\%~1" "%BoxOut%\%~n1\%~n1_%%N:~1%%%~x1")
	))

	"C:\Program Files\WinRAR\WinRAR.exe" a -ep1 -hpPassword "%BoxOut%\%~nx1.rar" "%BoxOut%\%~n1\*.*"
	"C:\Program Files\7-Zip\7zG.exe" a -pPassword "%BoxOut%\%~nx1.7Z" "%BoxOut%\%~n1\*.*"
Exit /B
Тут для примера сделано еще последовательная "вытяжка" логов за несколько дней.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:56, 24-10-2020 | #14


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ребят, большая благодарность за помощь, в особенности Elven и Megaloman!
Megaloman, отдельный респект, за постановку задачи и варианты решения!

1. При использовании данного варианта:
Цитата megaloman:
Вариант решения - к имени файлов добавляются имена серверов »
Код: Выделить весь код
@Echo On
	Call :Together "2020-10-05.gw.uniroll.log"
Exit /B

:Together
	Set "AllComp=127.0.0.1\c$\Test\1 127.0.0.1\c$\Test\2"
	Set "LogFolder=Log"

	Set "BoxOut=d:\Backup\files"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	>nul 2>&1 (For %%c In (%AllComp%) Do (
		Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1")
	)>> d:\Backup\log\1.txt
	)
	
Exit /B
После исполнения кода получается:
d:\Backup>(Copy "\\127.0.0.1\c$\Test\1\Log\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll\2020-10-05.gw.uniroll_127.0.0.1\c$\Test\1.log" )
Скопировано файлов: 0.

d:\Backup>(Copy "\\127.0.0.1\c$\Test\2\Log\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll\2020-10-05.gw.uniroll_127.0.0.1\c$\Test\2.log" )
Скопировано файлов: 0.

При использовании кода:
Код: Выделить весь код
@Echo on
	Call :Together "2020-10-05.gw.uniroll.log"
Exit /B

:Together
	Set "AllComp=127.0.0.1\c$\Test\1 127.0.0.1\c$\Test\2"
	Set "LogFolder=log"

	Set "BoxOut=d:\Backup\files"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	Set /A N=1000
	>nul 2>&1 (For %%c In (%AllComp%) Do (
		Set /A N+=1
		Call Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%N:~1%%%~x1")
		)>> d:\Backup\log\1.txt
		)		 
		Exit /B
Все копируется нормально:
d:\Backup>(
Set /A N+=1
Call Copy "\\127.0.0.1\c$\Test\1\log\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll\2020-10-05.gw.uniroll_%N:~1%.log"
)
Скопировано файлов: 1.

d:\Backup>(
Set /A N+=1
Call Copy "\\127.0.0.1\c$\Test\2\log\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll\2020-10-05.gw.uniroll_%N:~1%.log"
)
Скопировано файлов: 1.

Но ув. Megaloman меня не совсем верно понял, в связи с чем возникли небольшие трудности (недочеты), т.к. я не указал что:
Цитата:
На каждом сервере в указанной папке ежедневно создаются файлы имя.log, где хранятся лог-файлы за несколько дней,
например:
\\Server1\Log\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
\\Server2\Log\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
Логирование производится в папку с программой. Диск где установлена программа скрытый, а программа находится в с$\Program Files (x86).
На всех серверах и backup одна уч. запись, через нее имеется доступ к скрытым ресурсам данных серверов.

т.е. путь к ним выглядит:
\\Server1\c$\Program Files (x86)\Test\Log\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
\\Server2\c$\Program Files (x86)\Test\Log\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log

2.
Цитата:
Более старые файлы перемещаются в другое место в папку с именем сервера-источника, например:
\\Backup_Server\Server1\Log\2020-10-19.gw.uniroll.log ...2020-10-18.gw.uniroll.log ...
\\Backup_Server\Server2\Log\2020-10-19.gw.uniroll.log ...2020-10-18.gw.uniroll.log ...
Более старые перемещаются на Backup сервер в архив
\\Backup_Server\d$\Arh\Server1\logs_06-092020.zip
\\Backup_Server\d$\Arh\Server2\\logs_06-092020.zip.

Если копирование логов из
\\Server1\c$\Program Files (x86)\Test\Log\
\\Server2\c$\Program Files (x86)\Test\Log\
.........
не произошло (данные логи не найдены), то необходимо произвести поиск и копирование с извлечением из архивов:
\\Backup_Server\d$\Arh\Server1\logs_06-092020.zip
\\Backup_Server\d$\Arh\Server2\logs_06-092020.zip
........

Ребят, возможно ли доработать коды?
Буду признателен за помощь!

Немного переделанный код Megaloman с именами серверов:
Код: Выделить весь код
@Echo On
	Call :Together "2020-10-05.gw.uniroll.log"

Exit /B

:Together
	Set "AllComp=Max-ПК"
	Set "Folders=c$\Test\1 c$\Test\2"
	Set "LogFolder=Log"

	Set "BoxOut=d:\Backup\files"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	>nul 2>&1 (For %%c In (%AllComp%) Do (
			For %%a In (%Folders%) Do (
		Copy "\\%%c\%%a\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1")
		)
	) 
	)
			
Exit /B
тоже будет работает при разных именах серверов, но к сожалению почему то так же как и с нумерацией не хочет работать с c$\Program Files (x86)\Test\Log\

Отправлено: 22:18, 26-10-2020 | #15


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


KamikadZZe, Вы поставили задачу, я всего лишь "причесал" постановку, изложил для себя более последовательно.
Вы применяете мои командные файлы не в соответствии с постановкой, пытаетесь их тестировать на своём компьютере.
Но в постановке - серверы должны быть разные. Как вариант, чтобы протестировать на своём компьютере, наверняка у компьютера есть и свой IP, и сетевое имя,
Код: Выделить весь код
Set "AllComp=127.0.0.1 192.168.100.23 Max-ПК"
И добавлять к этим именам пути папок нельзя. Обратите внимание, при наличии кириллицы в именах, командный файл должен быть сохранен в 866 кодировке. Естественно, Вы будете копировать один и тот же файл со своего компьютера, но моделировать ситуацию с тремя серверами с разными адресами/именами можно. И, по условиям Вашей постановки, расположение папки с логами на разных серверах одинаковое, например:
Код: Выделить весь код
Set "LogFolder=C$\Program Files (x86)\Test\Log"
И список путей здесь неумесен, здесь только один путь.
Содержимое папки \\127.0.0.1\C$\Program Files (x86)\Test\Log
Код: Выделить весь код
20.10.2020  20:41                21 2020-10-20.gw.uniroll.log
20.10.2020  20:41                21 2020-10-21.gw.uniroll.log
20.10.2020  20:41                21 2020-10-22.gw.uniroll.log
В папке, где хранятся старые бэкапы соответственно должны содержаться подпапки с правильными именами, совпадающими с указанными Вами в списке
Содержимое папки \\Backup_Server\Test2
Код: Выделить весь код
27.10.2020  14:27    <DIR>          127.0.0.1
23.10.2020  20:52    <DIR>          192.168.100.23
23.10.2020  20:51    <DIR>          Max-ПК
В частности, содержимое одной из папок \\Backup_Server\Test2\127.0.0.1
Код: Выделить весь код
23.10.2020  20:52                 0 2020-10-17.gw.uniroll.log
23.10.2020  20:52                 0 2020-10-18.gw.uniroll.log
23.10.2020  20:52                 0 2020-10-19.gw.uniroll.log
Мои командные файлы с приближением к Вашим путям, без иных изменений
Добавляем имя серверов
Код: Выделить весь код
@Echo Off
	Call :Together "2020-10-17.gw.uniroll.log"
	Call :Together "2020-10-20.gw.uniroll.log"
Exit /B

:Together
	Set "AllComp=127.0.0.1 192.168.100.23 Max-ПК"
	Set "LogFolder=C$\Program Files (x86)\Test\Log"

	Set "Backup=\\Backup_Server\Test2"
	Set "BoxOut=Z:\Box_Out"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	>nul 2>&1 (For %%c In (%AllComp%) Do (
		Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1" ||(
		Copy "%Backup%\%%c\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1")
	))

	"C:\Program Files\WinRAR\WinRAR.exe" a -ep1 -hpPassword "%BoxOut%\%~nx1.rar" "%BoxOut%\%~n1\*.*"
	"C:\Program Files\7-Zip\7zG.exe" a -pPassword "%BoxOut%\%~nx1.7Z" "%BoxOut%\%~n1\*.*"
Exit /B
Добавляем нумерацию по порядку
Код: Выделить весь код
@Echo Off
	Call :Together "2020-10-18.gw.uniroll.log"
	Call :Together "2020-10-21.gw.uniroll.log"
Exit /B

:Together
	Set "AllComp=127.0.0.1 192.168.100.23 Max-ПК"
	Set "LogFolder=C$\Program Files (x86)\Test\Log"

	Set "Backup=\\Backup_Server\Test2"
	Set "BoxOut=Z:\Box_Out"

	If Not Exist "%BoxOut%\%~n1" (
		Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1)
	)
	
	Set /A N=1000
	>nul 2>&1 (For %%c In (%AllComp%) Do (
		Set /A N+=1
		Call Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%N:~1%%%~x1" ||(
		Call Copy "%Backup%\%%c\%~1" "%BoxOut%\%~n1\%~n1_%%N:~1%%%~x1")
	))

	"C:\Program Files\WinRAR\WinRAR.exe" a -ep1 -hpPassword "%BoxOut%\%~nx1.rar" "%BoxOut%\%~n1\*.*"
	"C:\Program Files\7-Zip\7zG.exe" a -pPassword "%BoxOut%\%~nx1.7Z" "%BoxOut%\%~n1\*.*"
Exit /B
Архивацию выбирайте сами, или пишите сами для других архиваторов
И, наконец, результат работы командных файлов
Код: Выделить весь код
 Содержимое папки Z:\Box_Out

27.10.2020  15:35    <DIR>          2020-10-17.gw.uniroll
27.10.2020  15:35               268 2020-10-17.gw.uniroll.log.7Z
27.10.2020  15:35               590 2020-10-17.gw.uniroll.log.rar

27.10.2020  15:37    <DIR>          2020-10-18.gw.uniroll
27.10.2020  15:37               234 2020-10-18.gw.uniroll.log.7Z
27.10.2020  15:37               542 2020-10-18.gw.uniroll.log.rar

27.10.2020  15:35    <DIR>          2020-10-20.gw.uniroll
27.10.2020  15:35               279 2020-10-20.gw.uniroll.log.7Z
27.10.2020  15:35               590 2020-10-20.gw.uniroll.log.rar

27.10.2020  15:37    <DIR>          2020-10-21.gw.uniroll
27.10.2020  15:37               244 2020-10-21.gw.uniroll.log.7Z
27.10.2020  15:37               542 2020-10-21.gw.uniroll.log.rar


 Содержимое папки Z:\Box_Out\2020-10-17.gw.uniroll

23.10.2020  20:52                 0 2020-10-17.gw.uniroll_127.0.0.1.log
23.10.2020  20:52                 0 2020-10-17.gw.uniroll_192.168.100.23.log
20.10.2020  20:41                21 2020-10-17.gw.uniroll_Max-ПК.log


 Содержимое папки Z:\Box_Out\2020-10-20.gw.uniroll

20.10.2020  20:41                21 2020-10-20.gw.uniroll_127.0.0.1.log
20.10.2020  20:41                21 2020-10-20.gw.uniroll_192.168.100.23.log
20.10.2020  20:41                21 2020-10-20.gw.uniroll_Max-ПК.log


 Содержимое папки Z:\Box_Out\2020-10-18.gw.uniroll

23.10.2020  20:52                 0 2020-10-18.gw.uniroll_001.log
23.10.2020  20:52                 0 2020-10-18.gw.uniroll_002.log
20.10.2020  20:41                21 2020-10-18.gw.uniroll_003.log


 Содержимое папки Z:\Box_Out\2020-10-21.gw.uniroll

20.10.2020  20:41                21 2020-10-21.gw.uniroll_001.log
20.10.2020  20:41                21 2020-10-21.gw.uniroll_002.log
20.10.2020  20:41                21 2020-10-21.gw.uniroll_003.log
Если такой подход Вас не устраивает, уточняйте постановку.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 27-10-2020 в 20:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:44, 27-10-2020 | #16


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем доброго времени суток!
Megaloman - Благодарю за пояснение и за помощь!!!
По поводу копирования логов с боевых серверов: Set "AllComp=127.0.0.1 192.168.100.23 Max-ПК"
Все работает как часики. Огромнейшая благодарность!

Цитата megaloman:
Если такой подход Вас не устраивает, уточняйте постановку. »
Но вот по поводу Set "Backup=\\Backup_Server\ не работает как надо.
Если на Backup_Server логи хранились в папках AllComp в открытом виде, то все работает как часы!

Дело в том, что на \\Backup_Server все логи хранятся в упакованном в rar архивы виде.

Цитата:
Backup (в архивы с логами) выбирать там нужный лог

Цитата:
не произошло (данные логи не найдены), то необходимо произвести поиск и копирование с извлечением из архивов:
\\Backup_Server\d$\Arh\Server1\logs_06-092020.zip
\\Backup_Server\d$\Arh\Server2\logs_06-092020.zip

Например:
На сервере Backup_Server содержатся папки с названием серверов:
127.0.0.1
192.168.100.23
Max-ПК

в которых имеются rar архивы:
log from 012020.rar
log from 042020.rar
log from 062020.rar
log from 102020.rar

Необходимо, чтобы в случае отсутствия необходимого лога на серверах:
127.0.0.1
192.168.100.23
Max-ПК

лог искался на сервере \\Backup_Server\
в папках:
127.0.0.1
192.168.100.23
Max-ПК

в архивах:
log from 012020.rar
log from 042020.rar
log from 062020.rar
log from 102020.rar

Возможно ли реализовать такой вариант?
Ну или какой вариант, если он есть возможен?
Имя лога можно поправить под необходимый, главное чтобы в нем стояла месяц и год (log from 012020.rar) или период (logs_06-092020.zip)
С архивацией zip, rar, 7z тоже можно решить вопрос, если это критично.

Буду презнателен и благодарен за помощь!

Отправлено: 22:17, 29-10-2020 | #17


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


KamikadZZe, какое содержание архивов (какие имена файлов, с путями?) и, наконец, какой он?
То ли \\Backup_Server\d$\Arh\Server1\logs_06-092020.zip
То ли \\Backup_Server\??????????\192.168.100.23\log from 042020.rar, что значат цифры в имени архива, дайте постановку четкую, я Вас об этом постоянно уговариваю.
Мазохист уговаривает садиста: мучай меня, мучай! А садист в ответ: не буду, не буду!

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 30-10-2020 в 13:53.


Отправлено: 13:41, 30-10-2020 | #18


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
дайте постановку четкую, я Вас об этом постоянно уговариваю.
Мазохист уговаривает садиста: мучай меня, мучай! А садист в ответ: не буду, не буду! »
Приветствую!
Прошу прощения если я не четко и не конкретно объясняюсь!
Вроде пытаюсь все максимально приближено объяснить.

Т.к. каждый день в 00:00:00 создается новый лог-файл, и таких лог-фалов вида (YYYY-MM-DD.XX.YYYYYYYY.log, где YYYY-MM-DD - дата лога, XX.YYYYYYYY - название лога) за день ведется порядка 50, на Backup_Server лог-файлы с каждого сервера переносятся в папки с названием сервера: Server1,Server2,Server3,Server4,Server5,Server6 в архивированном состоянии (например:log from 072020.rar). В данном архиве собираются все лог-фалы с сервера старше 3-х дней за квартал (т.е. за каждый день начиная с 01.07.2020 до 01.10.2020).

Необходимо, чтобы при отсутствии необходимого лог-файла YYYY-MM-DD.XX.YYYYYYYY.log (например: 2020-09-17.gw.uniroll.log) на серверах: Server1,Server2,Server3,Server4,Server5,Server6 производился поиск данного лога в \\Backup_Server\ в папках Server1,Server2,Server3,Server4,Server5,Server6\ в архивах: log from 012020.rar, log from 042020.rar, log from 072020.rar, log from 102020.rar
и при нахождении данного лога, он извлекался в \Box_Out\YYYY-MM-DD.XX.YYYYY (так же как при копировании с серверов: Server1,Server2,Server3,Server4,Server5,Server6).

Отправлено: 22:51, 30-10-2020 | #19


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата KamikadZZe:
каждый день в 00:00:00 создается новый лог-файл »
Цитата KamikadZZe:
при отсутствии необходимого лог-файла YYYY-MM-DD.XX.YYYYYYYY.log (например: 2020-09-17.gw.uniroll.log) на серверах: »
- что будет проверять всё на отсутствие всех возможных логов?
- когда должна происходить такая проверка, сразу после создания лога или в пределах 3-х дней?

Последний раз редактировалось alpap, 31-10-2020 в 18:03.


Отправлено: 01:36, 31-10-2020 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файлов с одинаковым именем с разных ПК или с backup архива

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Завершение всех процессов с одинаковым именем, если их больше 2 santey007 Скриптовые языки администрирования Windows 13 03-02-2020 07:24
upload большого архива или десятков больших файлов в облака algusev Хочу все знать 7 02-08-2019 14:47
CMD/BAT - Копирование файлов из разных папок yamixon Скриптовые языки администрирования Windows 0 14-12-2016 15:34
Доступ - Сетевой доступ с одинаковым именем пользователя AlexeyA Microsoft Windows 10 6 01-09-2016 19:15
Прочее - [решено] 2 ПК с одинаковым именем krokradio Сетевые технологии 2 04-02-2014 15:05




 
Переход