Имя пользователя:
Пароль:
 

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

Ветеран


Contributor


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

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


Цитата shadowjkee:
Правда есть одно уточнение: на "Сервере Б" эти файлы не сохраняются, а сразу перехватываются обработчиком и удаляются из каталогов. как в таком случае будет проходить проверка на "2. »
Да никак, все файлы, кроме сегодняшних, в таких условиях будут копироваться. Смысл задачи был до конца не прописан.
Вот вариант, который скопирует файл предыдущего рабочего дня. Если это было вчера - значит, вчерашний. Анализ даты - на основе имени файла формата ггггммдд.log.
Код: Выделить весь код
@Echo Off

Set "Maska=20??????.log"
Set "ToDayFile=%Date:~6,4%%Date:~3,2%%Date:~0,2%.log"

Call :Copir "Z:\Box_In\папка 1" "Z:\Box_Out\папка 1" 
Call :Copir "Z:\Box_In\папка 2" "Z:\Box_Out\папка 2" 

GoTo :Eof

:Copir
	For /F "usebackq delims=" %%f IN (`Dir "%~1\%Maska%" /B /A:-D /O:-N 2^>nul`) DO (
		If /I Not "%%~nxf"=="%ToDayFile%" (
			Copy "%~1\%%f" "%~2\" >nul
			GoTo :Eof
		)
	)
GoTo :Eof
Я убрал здесь проверку наличия скопированного файла, так так
Цитата shadowjkee:
эти файлы не сохраняются, а сразу перехватываются обработчиком и удаляются из каталогов »
так что при повторном запуске батника при наличии файла на "Сервере Б" он будет переписан. В принципе, проверку можно вернуть.

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

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

Отправлено: 12:33, 12-09-2017 | #6