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

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

Ветеран


Contributor


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

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


Цитата KamikadZZe:
2020-10-22.gw.uniroll.log - основной
2020-10-22.gw.uniroll_0.log -архивный
2020-10-22.gw.uniroll_1.log -архивный »
Где эти файлы? Как в папках для свежих логов, так и в заархивированном виде?
2020-10-22.gw.uniroll.log обязательно есть? А 2020-10-22.gw.uniroll_0.log может быть, а может и не быть?
Постановка ....
Я понимаю так: Сначала создаётся 2020-10-22.gw.uniroll.log
Если необходимо потом следующий 2020-10-22.gw.uniroll_0.log
Если необходимо потом следующий 2020-10-22.gw.uniroll_1.log
и т д
Вот модификация решения под такую постановку
Код: Выделить весь код
@Echo Off
cls
	Call :Together "2020-11-01.gw.uniroll.log"
	Call :Together "2020-11-28.gw.uniroll.log"
	Call :Together "2019-11-28.gw.uniroll.log"
	Call :Together "2020-11-29.gw.uniroll.log"
	Call :Together "2019-11-29.gw.uniroll.log"
pause
Exit /B

:Together
	Set "AllComp=127.0.0.1 LocalHost 192.168.100.23"
	Set "AllRar= app001    app002    app003"

	Set /A N=1000
	For %%i In (%AllRar%) Do (Set /A N+=1 &Call Set "@@Arc%%N%%=%%i")

	Set "LogFolder=C$\Program Files (x86)\Test\Log"

	Set "Backup=\\192.168.100.23\Test2"
	Set "Mask=log from ??20??.rar"

	Set "BoxOut=Z:\Box_Out"

	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)
	)
	
	Set /A N=1000
	For %%c In (%AllComp%) Do (
		Set /A N+=1
		For %%i In ("\\%%c\%LogFolder%\%~n1_*%~x1") Do >nul 2>&1 Call Copy "%%i" "%BoxOut%\%~n1\%%N:~1%%_%%c_%%~nxi"
		>nul 2>&1 Call Copy "\\%%c\%LogFolder%\%~1" "%BoxOut%\%~n1\%%N:~1%%_%%c_%~1"||(
			Call :FromRar %1 "%Backup%\%%N%%" "%BoxOut%\%~n1" "%%N:~1%%_%%c_"
		)
	)
	"%Arc%" a -ep1 -hpPassword "%BoxOut%\%~nx1.rar" "%BoxOut%\%~n1\*.*"
Exit /B

:FromRar
	Call Set "DirRar=%~dp2%%@@Arc%~nx2%%"

	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir "%DirRar%\%Mask%" /B /A:-D /O:-D /T:W`) DO (
		FOR /F "delims=" %%f IN ('""%Arc%" lb "%DirRar%\%%a"|Find /I %1"') DO (
			Set "NF=%%f"
			Call Set "NF=%%NF:%%~xf=_*%%~xf%%"
			Pushd %3
				>nul 2>&1 Call "%Arc%" e "%DirRar%\%%a" "%%f" "%%NF%%"
				>nul (For %%i In (%1 "%~n1_*%~x1") Do Move /Y %%i "%~4%%~i") 
			Popd
			Exit /B
		)
	)
Exit /B 1

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

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

Отправлено: 19:49, 03-12-2020 | #29