|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сравнение двух файлов>ветвление "fc" или "diff" |
|
CMD/BAT - [решено] Сравнение двух файлов>ветвление "fc" или "diff"
|
Новый участник Сообщения: 14 |
Профиль | Отправить PM | Цитировать Использую "GNU utilities for Win32"
В частности md5sum.exe, wget Задача: Скачивать данные с FTP, предварительно проверив нужна новая закачка или докачка, или вообше не нужно скачивать. Есть FTP сервер с данными для каждого файла есть файл с ".md5" (их скачиваю каждый раз без условий) На клиенте: дирректория с данными c:\1\data\ для всех файлов которые были скачаны в прошлый раз посчитаны md5 и сложены в c:\1\local\ все md5 с сервера прошлой закачки в c:\1\old\ UserPass_ftp=ftp:ftp set ftp_ip=10.8.0.26 set ftp_path=/data/ set path_local_data=c:\1\data\ rem Посчитать локальные MD5 del .\local\*.md5 for %%i in (*.*) do md5sum.exe %%i > .\local\%%i.md5 rem Переместить старые серверные MD5 move /Y *.md5 ./old rem Скачать новые MD5 с сервера wget -t2 ftp://%UserPass_ftp%@%ftp_ip%%ftp_path%md5/*.md5 REM сравнить MD5 с сервера со старым for %%i in (*.md5) do ( fc %%i .\old\%%i echo %ERRORLEVEL% if %ERRORLEVEL%==1 do ( set tempname=%path_local_data%%%i ) ) Вопрос в том что ERRORLEVEL всегда ноль. Идея исользовать ERRORLEVEL пришла от diff в NIX системах Команда diff возвращает код завершения 0, если сравниваемые файлы идентичны и 1, если они отличаются. Из "GNU utilities for Win32" то же ноль Какие есть альтернативы? |
|
Отправлено: 18:19, 06-07-2009 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Я для этих целей давно использую «Binary Compare» Steven'а Wettberg'а:
Поскольку сайт с этой загрузкой сейчас недоступен, вкладываю оригинальный архив в сообщение, можете попробовать. |
Отправлено: 18:38, 06-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Все равно получаю нули
В тестовом все отлично Результат Цитата:
@echo off for %%i in (*.md5) do ( echo BinComp.exe %%i .\old\%%i BinComp.exe %%i .\old\%%i echo %ERRORLEVEL% ) Цитата:
Внутри цикла как то иначе устанавливает %ERRORLEVEL% |
||
Отправлено: 20:11, 06-07-2009 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Всё правильно. Дело в том, что требуется:
в начале пакетного файла, и: вместо: поскольку в приведённом контексте [внутри скобок] для правильной работы требуется отложенное раскрытие переменной ERRORLEVEL (%ERRORLEVEL% же будет раскрыта один раз при входе в скобки). Update: прошу прощения, проглядел сразу про использование Вами diff.exe: при указанных выше изменениях будет видно, что он также работает корректно. |
Последний раз редактировалось Iska, 06-07-2009 в 20:37. Отправлено: 20:25, 06-07-2009 | #4 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Только об этом подумал. Спасибо за приданный импульс в правильном направлении.
Все варианты BinComp.exe, diff.exe, и windows fc.exe дают ожидаемый результат. Для моей задачи буду использовать fc.exe. P.S.Автор должен закрыть тему? Где? |
|
Отправлено: 23:02, 06-07-2009 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? | verdix | Microsoft Windows 2000/XP | 3 | 03-10-2009 23:46 | |
[решено] Переменные среды папок "Мои рисунки", "Моя музыка" или общие | Redew | Автоматическая установка Windows 2000/XP/2003 | 9 | 03-10-2009 20:43 | |
Разное - [решено] Вместо "Мой компьютер" или при двойном щелчке на папке открывается "Поиск" | ZoolooS | Microsoft Windows 2000/XP | 4 | 18-06-2008 16:34 | |
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") | submaster | Microsoft Windows NT/2000/2003 | 5 | 13-09-2006 12:29 | |
Когда нажимаю букву"M" или "L","U"...Проблема.. | ekodrive | Microsoft Windows 2000/XP | 7 | 27-01-2006 15:13 |
|