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

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

Аватара для gora

Ушёл из жизни


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

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


Anonymоus, попробуйте.
Из упрощений: предполагается, что в patch нет пустых папок и файлов без расширения (не захотелось с ними возиться). Папка backup пересоздается при запуске скрипта иначе в ней будет "каша" при запуске с разными патчами.
Код: Выделить весь код
@Echo Off
:: Кодировка файла Кириллица DOS (866). Лог файл содается в этой же кодировке
SetLocal enabledelayedexpansion
Set server=server
Set patch=patch
Set backup=backup
Set log=log.txt

RD /S/Q "%backup%" 1>Nul 2>Nul
MD "%backup%"
For /F "UseBackQ Delims=" %%I In (`Dir "%patch%" /S/B 2^>Nul`) Do Call :_copyF "%%I"
Echo Есть в %server%, помещены в %backup%:>%log%
Echo ===================================================>>%log%
Copy %log% + y%log% %log%>Nul
Echo.>>%log%
Echo Нет в %server%, добавлены из %patch%:>>%log%
Echo ===================================================>>%log%
Copy %log% + n%log% %log%>Nul
Echo.>>%log%
Del y%log% n%log%>Nul
Echo.
Pause
Exit

:_copyF
If "%~x1"=="" GoTo :EOF
Set nt=%~1
Set nt=!nt:*%patch%\=!
Set n1=%~nx1
Set nt1=!nt:%n1%=!
If Exist "%server%\%nt%" (
	Echo %server%\%nt%>>y%log%
	Echo %server%\%nt%
	xCopy %server%\%nt% %backup%\%nt1%>Nul
) Else (
	Echo %server%\%nt%>>n%log%
)
GoTo :EOF

Последний раз редактировалось gora, 13-08-2010 в 21:35.

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

Отправлено: 16:23, 13-08-2010 | #2