|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сравнение списка файлов! |
|
CMD/BAT - [решено] сравнение списка файлов!
|
Пользователь Сообщения: 96 |
Прошу помочь!
Есть два файла 1.txt и 2.txt допустим в первом: 1.пиво 2.кружка Во втором: 1.пиво 2.кружка 3.вотка Задача сравнить ети два файла и получить из них разницу в виде "3.вотка" То есть идея в чем, есть директория в которую будут добавляться периодически файлы над которыми должны выполнятся действия. при появлении будет выполнянтся команда dir сравнивать с предыдущим выводом этой команды или еталонным и получив список новых файлов куда то их копировать ! Спасибо ! |
|
Отправлено: 15:09, 30-07-2010 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Предлагаю не решать "влоб" Ваш вопрос, а заменить его в соотвествии с описанием задачи и таким образов свести решение к тому, что уже обсуждалось в этой ветке:
1. Есть каталог, где появляются новые, не обработанные файлы. 2. Некая часть скрипта (которую Вы пишете самостоятельно) выполняет некие действия над очередным файлом и помечает в логе, что файл уже обработан. Файлы, запись о которых уже есть в логе (даже не просто есть , а с пометкой "Ок") обрабатываться уже не будут. Как Вам такой вариант? если "сойдет", то вот, легкая модификация того, что здесь уже было: @Echo off SetLocal EnableExtensions Set WorkDir=.\ Set Mask=*.* Set GoodCondition=[Ok] Set BadCondition=[fail] set Log=%~dpn0.log pushd %WorkDir% for /f "tokens=1* delims=" %%F in ('dir /a-d /b /on %Mask%') do call :CheckLog "%%F" popd exit :CheckLog set File=%~1 for /f "tokens=* delims=" %%S in ('findstr /C:"%File%" %log% ^| findstr /C:"%GoodCondition%"') do exit /b set Status=%GoodCondition% rem Делаем что-нить полезное с файлом %File%, находящемся в текущем каталоге Copy %File% nul rem В случае, если обработка файла кончилась неудачно - обязательно смените "Status" на "неудачный"!!! if Errorlevel 1 set Status=%BadCondition% rem Кидаем пометку в лог set tm=%time::=-% set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%_%tm:~0,-3% echo %tm%: %Status% %File%>>%Log% exit /b |
------- Отправлено: 16:06, 30-07-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось deepred, 30-07-2010 в 16:32. Отправлено: 16:21, 30-07-2010 | #3 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Kobzar:
@Echo Off SetLocal EnableDelayedExpansion :: Сравниваемые списки Set lst1=1.txt Set lst2=2.txt :: Список отличий Set diflst=3.txt (For /F "tokens=* usebackq" %%i In ("%lst1%") Do ( Set fl=0 For /F "tokens=* usebackq" %%k In ("%lst2%") Do If %%i==%%k Set fl=1 If !fl!==0 Echo %%i ) For /F "tokens=* usebackq" %%i In ("%lst2%") Do ( Set fl=0 For /F "tokens=* usebackq" %%k In ("%lst1%") Do If %%i==%%k Set fl=1 If !fl!==0 Echo %%i ))>"%diflst%" |
|
Отправлено: 16:21, 30-07-2010 | #4 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать спасибо ! тема закрыта !
|
|
Отправлено: 16:28, 30-07-2010 | #5 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать deepred, если уникальные строки будут в обоих файлах, то в Вашем варианте будут выведены уникальные строки только из второго файла.
|
Отправлено: 17:27, 30-07-2010 | #6 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:30, 30-07-2010 | #7 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать а если не различия, а схождения надо найти?
|
Отправлено: 19:30, 06-07-2012 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Побайтовое сравнение двух файлов | korenza | Скриптовые языки администрирования Windows | 14 | 15-07-2018 17:18 | |
Сравнение текстовых файлов | Speedy | Программное обеспечение Windows | 9 | 30-03-2015 02:42 | |
Delphi - [решено] Сравнение файлов. | Snake750 | Программирование и базы данных | 6 | 15-03-2010 00:42 | |
C/C++ - Создание списка файлов | Albreht | Программирование и базы данных | 2 | 20-07-2009 01:17 | |
Сравнение файлов | Guest | Программирование и базы данных | 6 | 24-04-2004 04:47 |
|