Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Программка: киллер клонов (http://forum.oszone.net/showthread.php?t=252892)

Sindel 01-02-2013 10:13 2079913

Программка: киллер клонов
 
Всем привет, программеры, сможет кто помочь реализовать небольшой код в cmd

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

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

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

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

zion87 01-02-2013 12:03 2080024

Код:

@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 2080053

только "" добавил в:
Set "direct=D:\"
Set "copy=D:\copy\"

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


Время: 06:33.

Время: 06:33.
© OSzone.net 2001-