Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите сделать батник для копирование файлов с удаленых ip (http://forum.oszone.net/showthread.php?t=186448)

Moksar 25-09-2010 15:54 1504022

Помогите сделать батник для копирование файлов с удаленых ip
 
Есть сеть около 1000 машин,на каждой машине есть папка \\10.168.Y.X\test в этой папке создается каждый день .xml файлик.
Вопрос можно ли написать такой батник что бы при запуске из \\10.168.Y.X\test копировал на мою машину,скажем в C:\gathering,нужный мне .xml за определенную дату.Проблема в том что машин много и названия этих .xml у всех своё и каждый день.Так же машины с которых нужно скопировать каждый день разные(в день приходится руками забирать эти xml со 70-100 машин) .Хотелось бы каждый день меняя в батнике ip на актуальные избавится от этой проблемы.Да и не все машины бывают в сети.Желательно было бы что бы батник такие машины игнорил.
P.S.Особо не пинайте с таким раньше не сталкивался.

megaloman 25-09-2010 20:53 1504202

Код:

@Echo off

Set DD_MM_YYYY=01.04.2007

Set To=C:\gathering
Set Maska=*.xml

Call :CopyData "\\10.168.1.1\test"
Call :CopyData "\\10.168.2.2\test"
Call :CopyData "\\10.168.3.3\test"
Call :CopyData "\\10.168.4.4\test"
Call :CopyData "\\10.168.5.5\test"

GoTo :Eof

:CopyData
rem ----------------------------- Тест на доступ к исходной папке

If Not Exist "%~1\*.*" (
  Echo --- Указанный путь недоступен %1
  GoTo :Eof
)

rem ----------------------------- Цикл по файлам в папке по маске

FOR %%i IN ("%~1\%Maska%") DO Call :CopyDataFind "%%~ti" "%%i"
GoTo :Eof

:CopyDataFind
rem ----------------------------- Поиск и копирование файла за указанную дату
Set DMY=%~1

If %DD_MM_YYYY%==%DMY:~0,10% (
  Copy %2 "%To%\" >nul 1>nul
  If Exist "%To%\%~nx2" (
      Echo +++ Успешно скопирован %2
  ) Else (
      Echo --- Не удалось скопировать %2
  )
)

GoTo :Eof

В коде указываем дату файлов, путь, куда копируем, маску файлов. В системе формат даты должен быть dd.mm.yyyy, в ином случае требуется доработка.
В строках Call указываем, адреса откуда копируем .
Если Вы руками забираете нечто по указанным путям, значит, доступ по чтению (по крайней мере) у Вас имеется.
На экране отражаем процесс копирования.
В принципе, то же самое можно поместить и в лог-файл.

Moksar 26-09-2010 20:14 1505009

Спасибо большое!!Неожидал что так во сразу)
P.S.Протестил- работает без нареканий спасибо еще раз)

megaloman 30-09-2010 20:22 1508428

Если надо брать ip из текстового файла (например,zzz.txt), то замените кусок кода от Echo до GoTo
Код:

@Echo off

Set DD_MM_YYYY=01.04.2007
Set filename=D:\zzzz.txt

Set To=C:\gathering
Set Maska=*.xml

FOR /F "usebackq delims=" %%f IN (%filename%) DO Call :CopyData "\\%%f\test"

GoTo :Eof


Moksar 30-09-2010 22:01 1508485

Спасибо!!Выручил еще раз)


Время: 04:55.

Время: 04:55.
© OSzone.net 2001-