|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите с копированием файла(ов) в сетевые папки |
|
|
CMD/BAT - Помогите с копированием файла(ов) в сетевые папки
|
Новый участник Сообщения: 8 |
Добрый день.
Буду признателен местным гуру за помощь в решении 2х (одна простая,вторая немого сложнее), но очень важных задач. Первая: 1. В некой локальной папке лежит батник. 2. В эту папку подкидываем файл(ы) - это может быть и екселевский, и текстовый, и архив и катртинка... 3. Запускаем батник и он копирует все в 25 папок на сервере (названия папок на известны). Батник копировать не надо,он остаетса в директории. Вторую опишу чуть позже. Спасибо |
|
Отправлено: 12:15, 07-11-2012 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 21:58, 07-11-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата:
1. 2. Локальний диск D:\Source\ тут лежит батник и подкидываем файли в эту директорию 3. Уточняю: - Целевые директории,например: \\server1\snd\Dir.01 \\server1\snd\Dir.02 \\server1\snd\Dir.03 ... \\server1\snd\Dir.25 они созданы и всегда там есть (это папки для адресатов, почтовый скрипт ее регулярно сканирует и чистит) - файл копируем - если файл уже такой есть, то оставляем той что был. |
|
Отправлено: 00:57, 08-11-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ZamUtil:
|
|
Отправлено: 05:19, 08-11-2012 | #4 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата:
а по сути есть еще предложения? а то я написании батников полный нулл... |
||
Отправлено: 09:29, 08-11-2012 | #5 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать ZamUtil, батник, в простейшем случае - это просто список команд (каждая на отдельной строке), которые нужно последовательно выполнить. Вам нужно копировать, вот и вводим в Яндекс/Google "команда копирования".
Таким образом получите такую же хрень, как напишет кто-либо из форумчан. Потому что автоматизация так не делается - нужно вести логи работы; обрабатывать ошибки, громко сообщать о них и т.п. Лучше воспользуйтесь каким-нибудь готовым приложением для синхронизации/резервного копирования. |
Отправлено: 09:43, 08-11-2012 | #6 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата:
это и есть первая задачка: один файл всем. С Вашего вопроса плавно перейдем ко 2й задачке: есть кучка однотипных файлов, у каждого на 12- и 13-й позиции имени стоят циферки (00, 01, .... 25) как уже говорилось ранее есть (сори, не 25) 26 директорий. так вот по 12му + 13му символу нужно определить в какую из директорий нужно копирнуть файл. то есть \\server1\snd\Dir.00 - получит файл хххххххххх.00.ххх \\server1\snd\Dir.01 - получит файл хххххххххх.01.ххх \\server1\snd\Dir.02 - получит файл хххххххххх.02.ххх \\server1\snd\Dir.03 - получит файл хххххххххх.03.ххх ... \\server1\snd\Dir.24 - получит файл хххххххххх.25.ххх (это не ошибка!!, см. ниже) \\server1\snd\Dir.25 - получит файл хххххххххх.24.ххх (это не ошибка!!, см. ниже) По поводу 24-й и 25-й директории: существует не соответствие, и это факт. я ничего с этим не смогу сделать. такие дела.... |
|
Отправлено: 23:32, 08-11-2012 | #7 |
Ветеран Сообщения: 894
|
Профиль | Отправить PM | Цитировать for, dir, if, set, copy, move эти команды вам будут нужны для создания скрипта автоматизации (в первом приближении, возможно что-то еще подтянется).
алгоритм следующий, в цикле (for) получаем командой dir список файлов, анализируем 12-13 позицию: set pos=%%a, set pos=%~pos:12,2%, в if определяем в какую папку копировать, копируем/перемещаем. писать за вас никто не будет. Поищите по форуму, примеры есть. cmd /k help set и help указанные выше команды (for, dir, if, set, copy, move ) а также вдумчивое изучение множества букв которые выводятся по этим командам, сделают из вашего полного нулла, класного специалиста. |
------- Отправлено: 01:51, 09-11-2012 | #8 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off Set Name=E:\Delete\Dir Set Inbox=E:\Delete\Inbox SetLocal EnableExtensions SetLocal EnableDelayedExpansion FOR %%f IN ("%Inbox%\*.*") DO ( Set OK=0 FOR /L %%n IN (1,1,25) DO ( Set /A NN=%%n+100 Set NN=!NN:~1,2! Copy "%%f" "%Name%.!NN!\" >Nul 2>Nul If Not !ErrorLevel!==0 Set OK=1 ) If !OK!==0 Del %%f ) В переменной Inbox=E:\Delete\Inbox укажите исходную папку (у Вас это D:\Source ) Ваши пути не написал, так как отлаживал у себя - не вижу смысла подставлять ваши условные имена. Если файлы успешно скопируются во все 25 папок, исходный файл удаляю. Если этого делать не надо, убейте строку If !OK!==0 Del %%f и все остальные строки где помянута переменная ОК Батник НЕ ДОЛЖЕН находиться внутри папки с исходными файлами, так как я этого не предусмотрел. Можно и это предусмотреть, но пока лень. |
------- Последний раз редактировалось megaloman, 09-11-2012 в 17:29. Отправлено: 17:23, 09-11-2012 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Вот вариант второй задачи
@Echo Off Set Name=E:\Delete\Dir Set Inbox=E:\Delete\Inbox SetLocal EnableExtensions SetLocal EnableDelayedExpansion FOR %%f IN ("%Inbox%\??????????.??.???") DO ( Set N_In=%%~nxf Set N_In=!N_In:~11,2! Set N_Out=!N_In! If !N_In!==25 Set N_Out=24 If !N_In!==24 Set N_Out=25 Set /A N_In=1!N_In!+0 >nul 2>nul If !N_In! GEQ 100 If !N_In! LEQ 125 Move /Y "%%f" "%Name%.!N_Out!\" ) |
------- Отправлено: 19:31, 09-11-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Помогите с копированием | laughing | Скриптовые языки администрирования Windows | 2 | 31-01-2012 01:13 | |
помогите разобраться с резервным копированием ntbackup | hnsk | Microsoft Windows NT/2000/2003 | 4 | 12-03-2010 01:13 | |
Доступ - сетевые папки и 1с | DarkDream604 | Microsoft Windows 2000/XP | 9 | 15-12-2009 10:21 | |
Странная проблема с копированием файла | truvo | Хочу все знать | 6 | 26-09-2009 00:38 | |
запись в сетевые папки | Leshiy Prophet | Microsoft Windows NT/2000/2003 | 6 | 16-04-2009 06:59 |
|