Показать полную графическую версию : копирование файлов за текущую дату с сервера на сервер
Доброе время суток. В общем проблема заключается в том, что есть файлы с расширением *.dsus в папке на сервере, нужно чтобы они копировались на др сервер только за сегодняшнее (текущее) число, с заменой одинаковых файлов. Огромное спасибо за помощь.
Очень мало сведений, надо больше информации.... Код должен выполняться на одном из серверов или ? Пока посмотри тут: 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
Запускаться батник будет на "сервер1" (сервера в домене, если конечно это какнить поможет), на "сервер2" есть папка в которую и нужно копировать эти файлы, папка с общим доступом с полными правами на изменение/запись уже расшарена. с ftp вариант не устраивает, но огромное спасибо и на этом!!!
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
сетевой диск подключается только на время копирования...
Ответ дать не могу, начальник сказал никаких ftp и всё =/// Да, можно подключить как сетевой диск. Время не играет, играет роль только текущая дата. Да, все файлы в одной папке.
Добрый день! Долго искал в Интернете но так и не нашел решения для моей задачи
Помогите пожалуйста с батником который копирует из папки А в папку В только файлы текущей даты создания. Спасибо!
megaloman
06-05-2011, 12:41
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 Спасибо Вам большое за помощь! А Вы не могли бы обьяснить что означает 3,2% 0,2 и 6,4%
Спасибо!!!!
megaloman
06-05-2011, 15:28
Из хелпа xcopy (xcopy /?)
/D:m-d-y Копирует файлы, измененные либо в указанный день, либо после.
Читаем хелп Set (Set /?)
В переменной %Date% при соответствующей настройке системы содержится дата в виде
дд.мм.гггг
Соответственно %Date:~3,2% вырежет из даты 2 знака начиная с 3 позиции (если считать символы начиная с 0), то есть мм
Аналогично и остальные символы
Как результат, получим /D:mm-dd-yyyy, (для сегодня, например, /D:05-06-2011), что и требуется команде xcopy (надеюсь, с датами Вы не шалите и файлов с завтрешней датой у Вас нет)
Подскажите пожалуйста что нужно добавить к этой строке чтобы коммандник не копировал файлы в названии которых есть текст CDMA (пример названия файла: Activare201106210505_CDMA.xls)
Спасибо!!!
xcopy /D:%Date:~3,2%-%Date:~0,2%-%Date:~6,4% /Y \\Комп1\A\*.dsus \\Комп2\B\
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.