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

Показать сообщение отдельно

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


Сообщения: 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