|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование в папку исходя из вложенных файлов |
|
CMD/BAT - [решено] Копирование в папку исходя из вложенных файлов
|
Старожил Сообщения: 186 |
Профиль | Отправить PM | Цитировать Добрый день. Есть файлы для отправки BV100_ZNOXXXXXXXX_XXXXXXXXXXXX_NNNNNN.txt , где X - постоянные не меняющиеся числа, а N - меняется. Данные файлы хранятся в папках вида YYYY-MM-DD. На эти файлы приходят ответные файлы вида
KWTFCB_BV100_ZNOXXXXXXXX_XXXXXXXXXXXX_NNNNNN.txt Дата в наименовании папки не текущая. Нужно чтобы ответный файл кидался в папку, где лежит файл для отправки. Подскажите как это можно реализовать. |
|
Отправлено: 11:07, 20-08-2012 |
Ветеран Сообщения: 2727
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Последний раз редактировалось megaloman, 21-08-2012 в 19:53. Отправлено: 19:48, 21-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 186
|
Профиль | Отправить PM | Цитировать BV100_ZNOXXXXXXXX_XXXXXXXXXXXX_NNNNNN.txt лежит в папке YYYY-MM-DD
KWTFCB_BV100_ZNOXXXXXXXX_XXXXXXXXXXXX_NNNNNN.txt приходит в папку temp, и его нужно переместить в YYYY-MM-DD YYYY-MM-DD не текущая дата |
Отправлено: 09:08, 22-08-2012 | #3 |
Ветеран Сообщения: 2727
|
Профиль | Отправить PM | Цитировать @Echo Off SetLocal EnableExtensions SetLocal EnableDelayedExpansion Set In=E:\Delete\TMP Set Out=E:\Delete\Out Set PIn=KWTFCB_ Set POut=BV100_ZNO FOR /F "usebackq delims=" %%i IN (`Dir "%In%\%PIn%%POut%*.txt" /b /A:-D`) DO ( Set x=%%i Set x=!x:%PIn%=! FOR /F "usebackq delims=" %%j IN (`Dir "%Out%\!x!" /b /s /A:-D`) DO Move "%In%\%%i" "%%~dpj" ) В соответствии с постановкой задачи в папке E:\Delete\Out хранятся подпапки с датами, в которых имеются отправленные файлы (я предполагаю, что иных папок там нет, иначе батник будет дольше работать), а в папку E:\Delete\TMP приходят ответные файлы. Желательно, чтобы Tmp не была внутри Out |
------- Последний раз редактировалось megaloman, 22-08-2012 в 11:58. Отправлено: 11:48, 22-08-2012 | #4 |
Старожил Сообщения: 186
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 15:07, 22-08-2012 | #5 |
Ветеран Сообщения: 2727
|
Профиль | Отправить 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 |
Старожил Сообщения: 186
|
Профиль | Отправить PM | Цитировать Огромное Спасибо за разъяснения!!!
|
Отправлено: 09:10, 23-08-2012 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2007 - Ошибка "OLE" при открытии вложенных файлов. | kulthu | Microsoft Office (Word, Excel, Outlook и т.д.) | 5 | 21-09-2011 07:03 | |
CMD/BAT - [решено] архив-копирование файлов в папку-запуск исполняемого. | cher | Скриптовые языки администрирования Windows | 11 | 12-06-2011 11:42 | |
CMD/BAT - [решено] Копирование с флешки в папку на компьютере файлов с текущей датой | bazik83 | Скриптовые языки администрирования Windows | 6 | 19-05-2010 10:17 | |
[решено] SVN, как добавить папку в svn-репозиторий без вложенных в папку файлов? | pingUIN | Хочу все знать | 1 | 03-11-2009 17:16 | |
CMD/BAT - +VBS: копирование файлов с сервера в папку установки проги | la_vanille_ciel | Скриптовые языки администрирования Windows | 27 | 09-04-2008 11:53 |
|