Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite amigos.
preciso fazer o Backup de todos os arquivos de uma pasta que esta em outro computador, porém não sei se existe alguma função ou código para fazer isto de uma só vez.
Já consegui copiar arquivos, individualmente, de outro PC através do filecopy, entretanto não conheço nenhuma rotina para copiar todos.
Alguém teria alguma idéia que pudesse me ajudar? (VB 6.0)
valeu pela dica, entretanto não sei onde escpecificar os endereços de origem e destino, seria em: " If CopyFolder("From", "To")"?
Posso substituir os locais por outros PC da rede, como por exemplo "\\10.35.49.230\destino" e "\\10.35.49.211\origem", isto daria certo.
PS ainda não tentei pois não estou em local com acesso a meus programas.
Valeu mais uma vez.
>
Tenta isso:
Option Explicit
Private Declare Function SHFileOperation _
Lib "shell32.dll" _
Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Const FO_COPY = &H2
Private Sub Command1_Click()
If CopyFolder("From", "To") Then
MsgBox "Copied"
Else
MsgBox "Not copied"
End If
End Sub
Private Function CopyFolder(ByVal sFrom As String, _
ByVal sTo As String) As Boolean
Dim SHFileOp As SHFILEOPSTRUCT
On Error GoTo CF_Err
CopyFolder = False
With SHFileOp
.wFunc = FO_COPY
.pFrom = sFrom
.pTo = sTo
End With
SHFileOperation SHFileOp
CopyFolder = True
Exit Function
CF_Err:
MsgBox "Following error occurd while copying folder " & sFrom & vbCrLf & _
Err.Description, vbExclamation, "Error message"
End Function
Ou
Isso:
Dim fs As New Scripting.FileSystemObject
Set fs = New Scripting.FileSystemObject
fs.CopyFolder SourcePath, DestinationPath
Set fs = Nothing
http://www.programmersheaven.com/mb/VBasic...ctory/?S=B20000
Scorpio, funcionou como uma luva, foi perfeito, consegui copiar uma pasta para dentro de outra sem qualquer problema.
Caso Necessite copiar de outro PC pelo IP, seria possível?
Haveria também possibilidade de renomear a pasta toda vez que ela fosse para o novo destino, por exemplo com a data/hora do backup?
If CopyFolder("C:\pasta copiada", "C:\Backup") Then
e no destino seria armazenada como (pasta copiada 20Abr09)
Tentei assim e não funcionou : If CopyFolder("C:\pasta copiada" & Now, "C:\Backup") Then
Agradeço novamente.
Caso Necessite copiar de outro PC pelo IP, seria possível?
Acho que você teria que mapear a unidade de rede, para dai copiar
Renomear
Name "c:\a" As "c:\b"
Haveria também possibilidade de renomear a pasta toda vez que ela fosse para o novo destino, por exemplo com a data/hora do backup?
If CopyFolder("C:\pasta copiada", "C:\Backup") Then
e no destino seria armazenada como (pasta copiada 20Abr09)
Tentei assim e não funcionou : If CopyFolder("C:\pasta copiada" & Now, "C:\Backup") Then
Renomei a pasta depois que efetuar a cópia.
:P
Scorpio, poderia me dar um modelo de como fazer isto?
Se sim, por favor tente algo que acrescente ao nome da pasta, a data, tal como: " arquivo" para "arquivo 20/04/2009".
Ogrigado.
valeu mais uma vez.
ps: Esquece o meu post anteriorm da no mesmo. :lol:
CopyFolder "C:\teste", "C:\teste" & Format(Now, "ddMMMYYYY")
Em nome de pastas não é possivel colocar "/", pode ser isso que deu erro com você.
Scorpio, aproveitei sua dica e dei uma aprimorada para minhas necessidades.
Ficou como segue:
Private Sub Command2_Click()
If CopyFolder("C:\pasta copiada", "C:\Backup") Then
MsgBox "Copiado"
Else
MsgBox "Não copiado"
End If
If CopyFolder("C:\Backup\pasta copiada", "C:\Backup\pasta copiada" & " " & Format(Now, "ddMMMYY hhmmss")) Then
MsgBox "Pasta renomeada"
Kill "C:\Backup\Pasta copiada\."
RmDir "C:\Backup\Pasta copiada"
Else
MsgBox "Pasta não renomeada, deu pau."
End If
End Sub
Agora pra ficar perfeito tenho que conseguir fazer o Backup através de outro PC, o qual copiará os dados de uma pasta do servidor para outra.
Tens alguma idéia?
Valeu Brother.
(se precisar de algo na zona leste de SP pe só pedir) um abraço.
Tenta colocando o nome da pasta destino
"\\servidor\pasta_de_backups" & Format(Now, "ddMMMYY hhmmss")
Mesmo esquema, só que indicando o servidor ao invés do drive.
Se assim não funcionar, mapeia o servidor (aquele lance de Mapear unidade de rede...)
Tenta isso:
Option Explicit
Private Declare Function SHFileOperation _
Lib "shell32.dll" _
Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Const FO_COPY = &H2
Private Sub Command1_Click()
If CopyFolder("From", "To") Then
MsgBox "Copied"
Else
MsgBox "Not copied"
End If
End Sub
Private Function CopyFolder(ByVal sFrom As String, _
ByVal sTo As String) As Boolean
Dim SHFileOp As SHFILEOPSTRUCT
On Error GoTo CF_Err
CopyFolder = False
With SHFileOp
.wFunc = FO_COPY
.pFrom = sFrom
.pTo = sTo
End With
SHFileOperation SHFileOp
CopyFolder = True
Exit Function
CF_Err:
MsgBox "Following error occurd while copying folder " & sFrom & vbCrLf & _
Err.Description, vbExclamation, "Error message"
End Function
Ou
Isso:
Dim fs As New Scripting.FileSystemObject
Set fs = New Scripting.FileSystemObject
fs.CopyFolder SourcePath, DestinationPath
Set fs = Nothing
http://www.programmersheaven.com/mb/VBasic...ctory/?S=B20000