Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Как это работает.
Dir "%In%\%PIn%%POut%*.txt - выдаёт список файлов по указанной маске в инбоксе. В конкретном случае здесь
E:\Delete\TMP\KWTFCB_BV100_ZNO*.txt
(смотрите подсказку по команде Dir /? )
Для того, чтобы направить результаты вывода команды Dir в переменную %%i использую For (смотрите подсказку по команде For /? )
Переменной x присваиваю имя файла, выданное командой Dir из инбокса. Переменные, заключенные в !…! вместо %…%, будут раскрыты в их значения только в момент непосредственного использования. Режим включается командой
setlocal enabledelayedexpansion (Почитайте здесь)
Ушедшие из аутбокса файлы отличаются по имени от пришедших только отсутствием префикса (у Вас это KWTFCB_)
Командой Set x=!x:%PIn%=! я в имени пришедшего файла удаляю этот префикс (точнее, заменяю строку префикса на пустую строку (смотрите подсказку по команде Set /? ), этим самым я получаю имя ушедшего файла.
Далее командой Dir в аутбоксе E:\Delete\Out во всех поддиректориях ( /s ) ищу полное имя отправленного файла ( /b ), причём при поиске имена директорий не рассматриваю ( /A:-D - по видимому, здесь это лишнее).
Если файл найден, перемещаю (Move) пришедший файл в папку с отправленным (%%~dpj из полного имени отправленного файла %%j выделяет диск и путь)(смотрите подсказку по команде For /? )

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 22-08-2012 в 19:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:53, 22-08-2012 | #6