PDA

Показать полную графическую версию : Программка: киллер клонов


Sindel
01-02-2013, 10:13
Всем привет, программеры, сможет кто помочь реализовать небольшой код в cmd

Описание:
Есть папка, в которую выгружаются файлы (txt формат) программой "1". Другая программа "2" раз в 10 минут проверяет папку и переносит, загружает их дальше в себе.

Проблема:
В папку часто из программы "1" сыплятся копии txt файлов, бывает иногда по 3-5 копий. Клоны отличаются между собой только по имени, но их содержание абсолютно идентично.

Смысл:
Создание батника, работающего и запускаемого планировщиком задач. Программка будет грузиться за 15-20 сек. до того как программа "2" проверит папку и переместит клонов в каталог: /copy (не удаление, а команд перемещение на случай чего)

Задача:
Программка по запуску проверяет в конкретной директории файлы на наличие копий в их содержании (самих файлов которые могут быть копиями друг друга бывает иногда по 3-5 шт), переносит копии в директорию /copy, но при этом оставляет один оригинал. Проверку файлов на клонов не сделать через сравнение размера файла, т.к. разные файлы могут совпадать по размеру. (обычно файлы не больше 5кб)

zion87
01-02-2013, 12:03
@Echo Off
Set direct=D:\
Set copy=D:\copy\
Cd /d "%direct%"
For /f "Delims=*" %%H In ('Dir /b "*.txt"') Do Call :1 "%%H"
Goto:Eof
:1
Set x=%1
For /f "Delims=*" %%S In ('Dir /b "*.txt" ^|Findstr /bev /c:%x%') Do Call :2 "%%S"
Goto:Eof
:2
Set z=%1
@Echo n|COMP %x% %z% >nul
If %errorlevel%==0 Move /y %z% "%copy%"

Sindel
01-02-2013, 12:41
только "" добавил в:
Set "direct=D:\"
Set "copy=D:\copy\"

Спасибо теперь работает! :clapping:




© OSzone.net 2001-2012