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

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

Ветеран


Contributor


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

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


orgia, Что делает моё решение:
Сравнивает файл из D:\Tmp с одноименным файлом в архиве D:\TmpArc.
Если файлы совпадают, перемещаю файл из D:\Tmp в D:\TmpIn
Иначе в папку D:\TmpErr
И так циклически. Еще раз проверил - работает, переносит всё куда надо в зависимости от совпадения/несовпадения. Возможно, Вы некорректно указываете пути в батнике - самая распространённая проблема, когда в определении пути в конце имеются пробелы. Для отладки попробуйте вариант
Код: Выделить весь код
@echo on
cls

SetLocal EnableExtensions EnableDelayedExpansion

FOR %%f IN (D:\Tmp\*.*) DO (
	fc /B "%%f" "D:\TmpArc\%%~nxf"
        If !ErrorLevel!==0 (
		Move /Y "%%f" "D:\TmpIn\"
	) Else (
		Move /Y "%%f" "D:\TmpErr\"
	)
pause
)
Проанализируйте, есть ли там сообщения об ошибках. Сообщите.

И вообще, смысл задачи ускользает.
В норме у Вас пара файлов с одинаковыми именами в тмп и архиве, в норме они идентичны.
В тмп пользователь может изменить файл, в архиве - эталон.
Если в тмп пришел файл, одновременно он пришел и в архив (по условию Вашей задачи)
Нам всё равно, что творится с содержимым файла в тмп, главное, пришел файл, его надо обработать, и файл для обработки будем копировать в Ин из архива (где заведомо правильный файл). А в ТМП файл просто удаляем. Смысла сравнивать файлы вообще не вижу.

Tco 03, Возможно. Но мне надо четкая постановка.

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


Отправлено: 11:26, 16-02-2013 | #10