|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник для сравнения файлов |
|
CMD/BAT - [решено] Батник для сравнения файлов
|
Новый участник Сообщения: 16 |
Профиль | Отправить PM | Цитировать Всем привет!
Оч нужна ваша помощь. Нужен батник для сравнения 2 х файлов по содержимому. Например с фтп копирую файлы, например в с:\tmp\, его копия копируется в архив. Например если в какой нибудь файлик в с:\tmp кто нибудь внес изменения, цифры например поменял или текст какой, то этот файлик нужно переместить в папку c:\error, а другие файлы переместить в папку с:\in и так циклически. Заранее благодарю!!! |
|
Отправлено: 12:34, 13-02-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать orgia, научитесь уже пользоваться тэгом [code].
|
Отправлено: 11:42, 19-02-2013 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать orgia, я не вчитывался в Ваш код, я не читатель, а писатель но как вариант моего решения для Вашей постановки
@echo off Set TmpFtp=D:\Tmp Set TmpArc=D:\TmpArc Set TmpErr=D:\TmpErr Set TmpIn=D:\TmpIn Set Mask1=I%Date:~0,2%05805.??? Set Mask2=L01???????????.0?? Set Mask3=5005805?????????????????.dat Set Mask=5005805000%Date:~0,2%???.ED Move /Y "%TmpFtp%\%Mask%" "%TmpIn%\" >nul CD /D "%TmpFtp%" SetLocal EnableExtensions EnableDelayedExpansion FOR %%f IN ("%Mask1%" "%Mask2%" "%Mask3%") DO ( fc /B "%%f" "%TmpArc%\%%~nxf" >nul If !ErrorLevel!==0 ( Move /Y "%%f" "%TmpIn%\" >nul ) Else ( Move /Y "%%f" "%TmpErr%\" >nul ) ) |
------- Последний раз редактировалось megaloman, 20-02-2013 в 19:56. Отправлено: 14:04, 20-02-2013 | #22 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Благодарю, попробую внедрить Ваш батник в свой. И еще просьба подсказать. Как корректней указать путь к архивной папке в Вашем батнике. В
вашем Set TmpArc=D:\TmpArc а мне нужно X:\\Appl\Archive\ГГММДД\out\*.* вот до сюда. И как обработает батник файлы, если сначала упадут файлы Set TmpFtp=D:\Tmp, затем Set TmpArc=D:\TmpArc. Если эти файлы моим батником подтянутся еще раз он сравнение корректно сделает? |
Отправлено: 15:12, 21-02-2013 | #23 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 17:26, 21-02-2013 | #24 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать большое спасибо за помосчь!!! Ошибка при проверке ошибка FC: cannot open F:\Archive\130305\out\I0505805 - no such file or folder cannot be found. Доступ есть. Может из за того что диск подмапенный?
|
Отправлено: 12:32, 05-03-2013 | #25 |
Сообщения: 53456
|
Профиль | Отправить PM | Цитировать Цитата orgia:
|
|
Отправлено: 12:37, 05-03-2013 | #26 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать неа, не помогло. тем более решение для 7. обкатываю на 7 батник а работать бкит на xp/
вот этим батником обрабатывается @echo off Set TmpFtp=D:\Tmp Set TmpArc=F:\ARCHIVE\%Date:~8,2%%Date:~3,2%%Date:~0,2%\out Set TmpErr=D:\TmpErr Set TmpIn=D:\TmpIn Set Mask1=I%Date:~0,2%05805.??? Set Mask2=L01???????????.0?? Set Mask3=5005805?????????????????.dat Set Mask=5005805000%Date:~0,2%???.ED Move /Y "%TmpFtp%\%Mask%" "%TmpIn%\" >nul CD /D "%TmpFtp%" SetLocal EnableExtensions EnableDelayedExpansion FOR %%f IN ("%Mask1%" "%Mask2%" "%Mask3%") DO ( fc /B "%%f" "%TmpArc%\%%~nxf" >nul If !ErrorLevel!==0 ( Move /Y "%%f" "%TmpIn%\" >nul ) Else ( Move /Y "%%f" "%TmpErr%\" >nul ) ) |
Отправлено: 13:11, 05-03-2013 | #27 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать :CompMove
If Not Exist "%2" GoTo :Eof - не работает зараза. обработка на этом заканчивается всего батника, дальше не обрабатывает. |
Отправлено: 12:35, 06-03-2013 | #28 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать В спешке отвечал на Ваше PM на автопилоте (задачу уже не помнил) Попробуйте, тестировал, работает
@echo off Set TmpFtp=D:\Tmp Set TmpArc=D:\TmpArc Set TmpErr=D:\TmpErr Set TmpIn=D:\TmpIn FOR %%f IN (%TmpFtp%\*.*) DO Call :CompMove "%%f" "%TmpArc%\%%~nxf" GoTo :Eof :CompMove Set L=1 If Not Exist %2 Set L=0 If %L% EQU 1 If Not %~z1==%~z2 Set L=0 If %L% EQU 0 ( If Not Exist %TmpErr% Md %TmpErr% Move /Y %1 %TmpErr% >nul GoTo :Eof ) fc /B %1 %2 >nul If %ErrorLevel%==0 ( Move /Y %1 "%TmpIn%\" >nul ) Else ( Move /Y %1 "%TmpErr%\" >nul ) |
------- Отправлено: 16:41, 06-03-2013 | #29 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Спасибо, работает. И такой вопрос еще. я вызываю на исполнение Ваш файлик командой call. И ситуация такая, что батник уменя циклический, и постоянно вызывается даже при отсутствии во входном каталоге каких либо файлов. В принципе ничего фатального в этом нет, но хотелось бы причесать. Как вызывать ваш батник тлько при наличии во входном каталоге? У мну што то не совсем все получается.????
|
Отправлено: 07:38, 07-03-2013 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - БАтник для переноса файлов и обратно | saha1010 | Скриптовые языки администрирования Windows | 3 | 04-09-2011 11:15 | |
CMD/BAT - [решено] батник для копирования файлов из ряда поддиректорий | xumuk032 | Скриптовые языки администрирования Windows | 3 | 27-04-2010 21:23 | |
Прочие - Программа для сравнения файлов в различных каталогах | shadowmaster63 | Программное обеспечение Windows | 3 | 14-04-2010 10:28 | |
Алгоритм сравнения бинарных файлов | Savant | Программирование и базы данных | 2 | 04-05-2005 09:57 |
|