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

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

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


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

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


Цитата megaloman:
KamikadZZe, Лучше бы Вы рассказали, о какой рабочей среде речь (постановку дайте, умоляю). Вы изменили мой код, что Вы хотите сделать, надо докапываться, тем более что задача решалась давно. Мне надо как-то сымитировать Вашу ситуацию, чтобы что-то сделать. »
Прошу прощения что не сразу отписался о возникшей проблеме при изменении кода!

Есть несколько серверов.

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

На каждом сервере
Например:
Server1
Server2
Server3
.......
итд.

имеется папка Logs расположенная в:
C$\Program Files (x86)\Test\Log"

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

Более старые файлы перемещаются в архив, в папку определяющую сервер-источника на сервере Backup, например:
\\Server_Buckup\d$\BackUp\app001\log from ??.??.20??.rar"
\\Server_Buckup\d$\BackUp\app002\log from ??.??.20??.rar"
\\Server_Buckup\d$\BackUp\app003\log from ??.??.20??.rar"
.......
итд.

Задача: собрать определённый логфайл, например: 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
...............
итд.

Если файл старше нескольких дней то поиск осуществляется в архивах:
Например: \\Server_Buckup\d$\BackUp\app001\log from ??.??.20??.rar"
\\Server_Buckup\d$\BackUp\app002\log from ??.??.20??.rar"
\\Server_Buckup\d$\BackUp\app003\log from ??.??.20??.rar"
.......
итд.

Полученную папку заархивировать

Приведенный код хотел подстроить под данную постановку:
[CODE]@Echo On
cls
Call :Together "2020-11-08.uniroll.log"

pause
Exit /B

:Together
Set "AllComp=127.0.0.1 Max-ПК"
Set "LogFolder=c$\logs"


Set "Backup=d:\BackUp"

Set "BackupFolder=app001 app002"
Set "Mask=log from ??.??.20??.rar"

Set "BoxOut=d:\BackUp\Copy"

Set "Arc=C:\Program Files\WinRAR\Rar.exe"

If Not Exist "%BoxOut%\%~n1" (
Md "%BoxOut%\%~n1" ||(Echo Folder "%BoxOut%\%~n1" not created &Pause &Exit /B 1
)


For %%c In (%AllComp%) Do (

>nul 2>&1 Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%~n1_%%c%~x1"||(
For %%b In (%BackupFolder%) Do (
Call :FromRar %1 "%Backup%\%%b" "%BoxOut%\%~n1\%~n1_%%c%~x1"
) >>1.txt
Pause
)
)
)
"%Arc%" a -ep1 -hp123 "%BoxOut%\%~nx1.rar" "%BoxOut%\%~n1\*.*"
Pause

Exit /B

:FromRar

FOR /F "usebackq delims=" %%a IN (`2^>nul Dir "%~2\%Mask%" /B /A:-D /O:-D /T:W`) DO (
FOR /F "delims=" %%f IN ('""%Arc%" lb "%~2\%%a"|Find /I %1"') DO (
Pushd "%~dp3"
>nul 2>&1 "%Arc%" e "%~2\%%a" "%%f"
>nul Move /Y "%%~nxf" "%~nx3"
Popd
Exit /B
)
)
Exit /B 1

[/code]

В дополнение:
Цитата KamikadZZe:
На каждом сервере в указанную папку ежедневно создаются файлы имя.log, где хранятся лог-файлы за несколько дней,
например:
\\Server1\Logs\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log \\Server2\Logs\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
\\Server3\Logs\2020-10-22.gw.uniroll.log ...2020-10-21.gw.uniroll.log ...2020-10-20.gw.uniroll.log
.......
итд.
Более старые файлы перемещаются в архив, в папку определяющую сервер-источника на сервере Backup, например:
\\Server_Buckup\d$\BackUp\app001\log from ??.??.20??.rar"
\\Server_Buckup\d$\BackUp\app002\log from ??.??.20??.rar"
\\Server_Buckup\d$\BackUp\app003\log from ??.??.20??.rar"
.......
итд. »
Файлов 2020-10-22.gw.uniroll.log за определенный день может быть несколько, т.е. происходит дополнительная их нумерация в течении дня.
2020-10-22.gw.uniroll.log - основной
2020-10-22.gw.uniroll_0.log -архивный
2020-10-22.gw.uniroll_1.log -архивный
.......
итд.

Отправлено: 21:08, 26-11-2020 | #24