Войти

Показать полную графическую версию : Удаление непарных файлов в увеличением в фильтре и отправка по почте через Blat


NemoSUN
28-05-2013, 10:43
В директорий IN приходят файлы вида:
otk4_25_2013-05-23-16-18-27.rar
otk11s1_69_2013-05-24-15-14-51.rar
otk14_74,75_2013-05-24-16-05-30.rar

Они обрабатываются программой и выдаются в папку OUT виде:
ast_totk10_2013-05-27-09-18-47.rar

Входящему otk10s3_78_2013-05-23-15-12-51.rar соответствует выходящий ast_totk10_2013-05-24-09-18-47.rar

Но !!! Входящих файлов может быть меньше чем обработанных - обработка выдаёт количество файлов в соответствии со внутренним общим числом. Просто в каких то выходящих файлах после обработки старая информация.

Нужно удалить непарные в выходящих файлах, т.е те, которым не было соответствия во входящих файлах. Т.е. если не было otk10s3_78_2013-05-23-15-12-51.rar то надо удалить в обработанных ast_totk10_2013-05-24-09-18-47.rar

Здесь при отборе нужно учесть только часть имени - во входящих и исходящих учесть часть букв и цифр, т.е. у файла otk10s3_78_2013-05-23-15-12-51.rar надо учитывать только otk10, а у выходящего ast_totk10_2013-05-24-09-18-47.rar только totk10 и т.д. Остальная часть наименования неважна.

Далее, оставшиеся файлы отправляются вложениями по почте. Каждому файлу соответствует свой мейл и единая тема у всех.

Georgio
28-05-2013, 16:14
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET IN=E:\IN
SET OUT=E:\OUT

FOR %%I IN ("%OUT%/*") DO (
FOR /F "tokens=2 delims=_" %%J IN ("%%~nI") DO (
SET VAR=%%J
IF NOT EXIST "%IN%\*!VAR:~1!*.rar" (
DEL "%OUT%\*%%J*.rar"
)))

megaloman
28-05-2013, 20:39
Georgio, Не совсем корректная работа:

Если имеется файл ast_totk4_траляляляля.rar
Нет файла otk4траляляляля.rar
Есть файл otk45_траляляляля.rar

То файл ast_totk4_траляляляля.rar после работы батника выживет.

Вот что было до работы батника
E:\DDDDDDDDD\In\otk44траляляляля.rar
E:\DDDDDDDDD\Out\ast_totk4_траляляляля.rar
E:\DDDDDDDDD\Out\ast_totk55_траляляляля.rar

Вот что осталось после
E:\DDDDDDDDD\In\otk44траляляляля.rar
E:\DDDDDDDDD\Out\ast_totk4_траляляляля.rar

Проверил ...

Georgio
28-05-2013, 21:24
Да, действительно, в таких условиях "выживает". Буду искать, как зтого "безобразия" не допускать.

NemoSUN
28-05-2013, 22:17
megaloman,
в файле otk44траляляляля.rar обязательно будет "_" после otk44. Т.е. в выходящем файле после "заголовка" нет ничего до "_". Потому что файлы приходят с одного, двух, трёх помещений, а отсылается один файл на все помещения одной группы и на одну почту (на первый номерной мейл).

Georgio
28-05-2013, 22:25
NemoSUN, а как же тогда: Входящему otk10s3_78_2013-05-23-15-12-51.rar соответствует выходящий ast_totk10_2013-05-24-09-18-47.rar » ?

NemoSUN
29-05-2013, 08:34
Georgio,
Извиняюсь. Спасибо за замечание.

P.S. Писал второй раз уже со спичками в глазах и с отключенным мозгом....


Так как? Получиться отрезать от otk10s3 s3 ? После otk идут не более 2-х ЦИФР (т.е. все цифры от 1 до 99 - номер комнаты(отдела)).

Georgio
29-05-2013, 08:50
NemoSUN, буду думать.

NemoSUN
29-05-2013, 09:10
Georgio,
Благодарю) Буду ждать решения.

И ещё:

Если вместо:
SET IN=E:\IN
SET OUT=E:\OUT

написать так (чтобы не зажимать абсолютный путь):
SET IN=.\IN
SET OUT=.\OUT

Не слишком грубовато ?

Georgio
29-05-2013, 13:15
Получиться отрезать от otk10s3 s3 ? »

Да, если в зтом месте будет только буква s.


написать так (чтобы не зажимать абсолютный путь):
SET IN=.\IN
SET OUT=.\OUT »

Да хоть так, хоть вот так:
SET IN=IN
SET OUT=OUT

Запускать только придётся из директории с каталогами IN и OUT или с помощью CD /D.


NemoSUN, проверяйте:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET IN=IN
SET OUT=OUT

FOR /F "tokens=2 delims=_" %%I IN ('DIR "%OUT%" /B') DO (
SET VAR=%%I
IF NOT EXIST "%IN%\!VAR:~1!_*.rar" (
IF NOT EXIST "%IN%\!VAR:~1!s*.rar" (
DEL /F /Q "%OUT%\*!VAR!_*.rar"
)))

NemoSUN
29-05-2013, 14:17
Georgio,

АТЛИЧЧНО !!!!!!!!!!!!!!!!! БЛАГОДАРЮ ))))))))))))



А как будет отличаться файл для таких входящего и исходящего файлов - ok10s3_78_2013-51.rar и ck_okfk16_2013-05.rar




© OSzone.net 2001-2012