|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - копирование файлов за текущую дату с сервера на сервер |
|
|
CMD/BAT - копирование файлов за текущую дату с сервера на сервер
|
Новый участник Сообщения: 3 |
Доброе время суток. В общем проблема заключается в том, что есть файлы с расширением *.dsus в папке на сервере, нужно чтобы они копировались на др сервер только за сегодняшнее (текущее) число, с заменой одинаковых файлов. Огромное спасибо за помощь.
|
|
Отправлено: 14:29, 29-06-2010 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Очень мало сведений, надо больше информации.... Код должен выполняться на одном из серверов или ? Пока посмотри тут: http://forum.oszone.net/thread-169489.html
и тут: http://forum.oszone.net/thread-179316.html (батник) и пример ( нужна утилита NcFTP Client 3.2.3 for Microsoft Windows): @ECHO OFF set archive="C:\obmen\archive\" && set obmen="C:\obmen\zayav\" set tempfld="C:\obmen\temp\" && set dd=%DATE:~0,2% set mm=%DATE:~3,2% && set yyyy=%DATE:~8,2% set imya=%dd%%mm%%yyyy% IF NOT EXIST %obmen%zayav.dbf goto end copy %obmen%zayav.dbf %tempfld%alieva%imya%(1).dbf Echo Идет отправка! "C:\Program Files\NcFTP\ncftpput.exe" -F -u user -p passw 192.168.0.55 /zayav C:\obmen\temp\alieva%imya%(1).dbf If errorlevel 1 Echo !!Ошибка соединения!! & goto end2 del %tempfld%*.* /q Echo Успешно!, для продолжения нажмите любую кнопку... pause>nul copy %obmen%zayav.dbf %archive%os%imya%.dbf goto :EOF :end Echo Отсутствуют файлы для передачи! pause goto :EOF :end2 del %tempfld%*.* /q pause del c:\obmen\obmen.bat /q |
Отправлено: 15:09, 29-06-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Запускаться батник будет на "сервер1" (сервера в домене, если конечно это какнить поможет), на "сервер2" есть папка в которую и нужно копировать эти файлы, папка с общим доступом с полными правами на изменение/запись уже расшарена. с ftp вариант не устраивает, но огромное спасибо и на этом!!!
|
Отправлено: 15:41, 29-06-2010 | #3 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать 6a6yko,
почему вариант с ftp не устраивает? К папке на "сервер 2" открыт общий доступ и её можно подключить как сетевой диск? Врем копирования роль играет? и сами файлы *.dsus находятся в одной папке? На скорую руку такая штука получилась, проверяй: @Echo Off&&Chcp 866 net use X: адрес пароль /user:имя_пользователя /persistent:no ping -n 2 1500 127.0.0.1>nul if exist "X:\" (( call :copy_file net use X: /Delete goto :eof)) else (Echo Ошибка подключения! goto :eof) :copy_file set $num=0 Set $SCR=F:\exe\ Set $SCF=*.dsus Set $DCR=F:\exe\qwer Set $Obj=%$SCR%:%$SCF% for /F "tokens=* Delims=" %%a In ('Where %$Obj% ') do (set /a $num+=1 call :action "%%a" "%%~ta") Echo Скопировано %$num% файлов!!! goto :eof :action set ch=%~2 set ch=%ch:~0,10% if "%ch%"=="%date%" (( if not exist $DCR md %$DCR%\ copy /v /y %1 %$DCR%\)) else goto :eof Тебе нужно под себя отредактировать пути в переменных: Set $SCR=F:\exe\ и Set $DCR=F:\exe\qwer Тоже самое, но *****.vbs Выделенное под замену.... Option Explicit Dim objWshNetwork, objShell, objFolder, objFSO, objFile Dim strPath2SourceFolder, strPath2RootDestFolder Dim intErrLevel, WshNetwork, strShare, strDrive, strDescriptiton strShare = "\\HPPAVILION-PC\exe" strDrive = "X:" strDescriptiton = "Resourse" Set objWshNetwork = WScript.CreateObject("WScript.Network") objWshNetwork.MapNetworkDrive strDrive, strShare Set objShell = WScript.CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(strDrive) If not (objFolder Is Nothing) Then objFolder.Self.Name = strDescriptiton else WScript.Echo "[" & strShare & "] is not exists." intErrLevel = 1 End If Set objFolder = Nothing Set objShell = Nothing Set objWshNetwork = Nothing strPath2SourceFolder = "F:\exe" strPath2RootDestFolder = "\\HPPAVILION-PC\exe\qwer" intErrLevel = 0 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") For Each objFile In objFSO.GetFolder(strPath2SourceFolder).Files If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("dsus") and _ DateDiff("D", objFile.DateLastModified, Now) = 0 then If Not objFSO.FolderExists(strPath2RootDestFolder) Then objFSO.CreateFolder strPath2RootDestFolder End If objFile.COPY strPath2RootDestFolder & "\" End If WScript.Sleep 100000 Set WshNetwork = WScript.CreateObject("WScript.Network") WshNetwork.RemoveNetworkDrive strDrive, false, false Next |
Последний раз редактировалось deepred, 13-07-2010 в 10:18. Отправлено: 15:51, 29-06-2010 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Ответ дать не могу, начальник сказал никаких ftp и всё =/// Да, можно подключить как сетевой диск. Время не играет, играет роль только текущая дата. Да, все файлы в одной папке.
|
|
Отправлено: 16:03, 29-06-2010 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Добрый день! Долго искал в Интернете но так и не нашел решения для моей задачи
Помогите пожалуйста с батником который копирует из папки А в папку В только файлы текущей даты создания. Спасибо! |
Отправлено: 11:24, 06-05-2011 | #6 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать zenner, 6a6yko, Если в системе дата в формате дд.мм.гггг то
xcopy /D:%Date:~3,2%-%Date:~0,2%-%Date:~6,4% /Y D:\A\*.* D:\B\ При копировании с компьютера на компьютер можно указать сетевые пути (сетевой диск делать вовсе не обязательно), лишь бы хватало прав у пользователя, который запускает команду, на чтение исходных файлов на одном компьютере и на запись для копий на другом. xcopy /D:%Date:~3,2%-%Date:~0,2%-%Date:~6,4% /Y \\Комп1\A\*.dsus \\Комп2\B\ |
------- Последний раз редактировалось megaloman, 06-05-2011 в 12:47. Отправлено: 12:41, 06-05-2011 | #7 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Megaloman Спасибо Вам большое за помощь! А Вы не могли бы обьяснить что означает 3,2% 0,2 и 6,4%
Спасибо!!!! |
Отправлено: 13:59, 06-05-2011 | #8 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать Из хелпа xcopy (xcopy /?)
/D:m-d-y Копирует файлы, измененные либо в указанный день, либо после. Читаем хелп Set (Set /?) В переменной %Date% при соответствующей настройке системы содержится дата в виде дд.мм.гггг Соответственно %Date:~3,2% вырежет из даты 2 знака начиная с 3 позиции (если считать символы начиная с 0), то есть мм Аналогично и остальные символы Как результат, получим /D:mm-dd-yyyy, (для сегодня, например, /D:05-06-2011), что и требуется команде xcopy (надеюсь, с датами Вы не шалите и файлов с завтрешней датой у Вас нет) |
------- Отправлено: 15:28, 06-05-2011 | #9 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Еще раз Спасибо!!!!
|
Отправлено: 15:51, 06-05-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Копирование файлов с моего пк на FTP-сервер | zeroua | Скриптовые языки администрирования Windows | 13 | 04-09-2012 12:57 | |
CMD/BAT - +VBS: копирование файлов с сервера в папку установки проги | la_vanille_ciel | Скриптовые языки администрирования Windows | 27 | 09-04-2008 11:53 | |
Можно ли запретить копирование файлов на сервер по маске | admyes | Microsoft Windows NT/2000/2003 | 1 | 08-12-2005 06:44 | |
Копирование файлов с сервера | Alexeus | Microsoft Windows NT/2000/2003 | 7 | 19-05-2004 15:31 | |
Закаска файлов на свой сервер, с другого сервера | Pawel gor | Вебмастеру | 1 | 08-04-2004 23:03 |
|