Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите с копированием файла(ов) в сетевые папки

Ответить
Настройки темы
CMD/BAT - Помогите с копированием файла(ов) в сетевые папки

Новый участник


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

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


Добрый день.
Буду признателен местным гуру за помощь в решении 2х (одна простая,вторая немого сложнее), но очень важных задач. Первая:
1. В некой локальной папке лежит батник.
2. В эту папку подкидываем файл(ы) - это может быть и екселевский, и текстовый, и архив и катртинка...
3. Запускаем батник и он копирует все в 25 папок на сервере (названия папок на известны). Батник копировать не надо,он остаетса в директории.
Вторую опишу чуть позже.
Спасибо

Отправлено: 12:15, 07-11-2012

 

Ветеран


Contributor


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

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


Цитата:
Запускаем батник и он копирует все в 25 папок на сервере (названия папок на известны)
- не понятно, куда копировать, Вы уж просветите, по какому принципу они определяются или создаются. Надо копировать или перемещать из локальной папки на сервер? А если на сервере уже есть такой файл в папке - что делать?

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

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

Отправлено: 21:58, 07-11-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

Профиль | Отправить 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
Благодарности: 8087

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


Цитата ZamUtil:
1. В некой локальной папке лежит батник.
2. В эту папку подкидываем файл(ы) …
3. Запускаем батник и он копирует все в 25 папок на сервере … Батник копировать не надо,он остаетса в директории. »
Никогда так не делайте. Не держите пакетный файл в той же папке, из которой будете плодить сущности.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:19, 08-11-2012 | #4


Новый участник


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

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


Цитата:
Никогда так не делайте. Не держите пакетный файл в той же папке, из которой будете плодить сущности.
за совет спасибо. в некоторой степени согласен
а по сути есть еще предложения? а то я написании батников полный нулл...

Отправлено: 09:29, 08-11-2012 | #5


Ветеран


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

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


ZamUtil, батник, в простейшем случае - это просто список команд (каждая на отдельной строке), которые нужно последовательно выполнить. Вам нужно копировать, вот и вводим в Яндекс/Google "команда копирования".

Таким образом получите такую же хрень, как напишет кто-либо из форумчан. Потому что автоматизация так не делается - нужно вести логи работы; обрабатывать ошибки, громко сообщать о них и т.п. Лучше воспользуйтесь каким-нибудь готовым приложением для синхронизации/резервного копирования.

Отправлено: 09:43, 08-11-2012 | #6


Новый участник


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

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


Цитата:
Мне не хочется думать, что он должен попасть во все 25 папок сразу
- должен...
это и есть первая задачка: один файл всем.

С Вашего вопроса плавно перейдем ко 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
Благодарности: 137

Профиль | Отправить 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


Ветеран


Contributor


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

Профиль | Отправить 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
)
В переменной Name пропишИте префикс имён ваших двдцати пяти папок (у меня в примере E:\Delete\Dir, у Вас будет префикс с сетевым именем типа \\server1\snd\Dir)
В переменной Inbox=E:\Delete\Inbox укажите исходную папку (у Вас это D:\Source )
Ваши пути не написал, так как отлаживал у себя - не вижу смысла подставлять ваши условные имена.
Если файлы успешно скопируются во все 25 папок, исходный файл удаляю.
Если этого делать не надо, убейте строку
If !OK!==0 Del %%f
и все остальные строки где помянута переменная ОК
Батник НЕ ДОЛЖЕН находиться внутри папки с исходными файлами, так как я этого не предусмотрел.
Можно и это предусмотреть, но пока лень.

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


Последний раз редактировалось megaloman, 09-11-2012 в 17:29.


Отправлено: 17:23, 09-11-2012 | #9


Ветеран


Contributor


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

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите с копированием файла(ов) в сетевые папки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход