Inquiridor
Script VBs de Sincronização de Arquivos

Pergunta
-
Bom dia! Gostaria de ajuda com um script de sincronização de arquivos do servidor para o cliente da seguinte forma:
Declarar variáveis para os nomes dos executáveis e do diretório do servidor e cliente, pois alguns clientes tem diretório diferente, ai para facilitar a alteração do script para pôr em cada cliente, modificar só as variáveis.
Ex.:
dirServidor = "\\10.0.0.1\SERVIDOR\"
dirCliente = "C:\CLIENTE\"
Executavel1 = "ISAtacadista.exe"
Executavel2 = "ISBusiness.exe"
Na inicialização do computador, verificar:
- Se existe o diretório no servidor e no cliente
- Se a versão do servidor tiver uma data de modificação mais nova, copiar para o cliente
Todas as Respostas
-
Não testei nem otimizei o código, mas seria mais ou menos nesta lógica:
dirServidor = "\\10.0.0.1\SERVIDOR" dirCliente = "\\10.0.0.1\SERVIDOR\" Executavel1 = "ISAtacadista.exe" Executavel2 = "ISBusiness.exe" Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(dirServidor) Then If objFSO.FolderExists(dirCliente) Then Set objFile1 = objFSO.GetFile(dirServidor & "\" & Executavel1) Set objFile2 = objFSO.GetFile(dirCliente & "\" & Executavel1) If CDate(objFile1.DateLastModified) <> CDate(objFile2.DateLastModified) Then FileCopy dirServidor & "\" & Executavel1, dirCliente & "\" & Executavel1, True End If Set objFile3 = objFSO.GetFile(dirServidor & "\" & Executavel2) Set objFile4 = objFSO.GetFile(dirCliente & "\" & Executavel2) If CDate(objFile3.DateLastModified) <> CDate(objFile4.DateLastModified) Then objFSO.CopyFile dirServidor & "\" & Executavel2, dirCliente & "\" & Executavel2, True End If End If Else Wscript.Echo "Diretório(s) não existe(m)" End If
-
Não testei nem otimizei o código, mas seria mais ou menos nesta lógica:
dirServidor = "\\10.0.0.1\SERVIDOR" dirCliente = "\\10.0.0.1\SERVIDOR\" Executavel1 = "ISAtacadista.exe" Executavel2 = "ISBusiness.exe" Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(dirServidor) Then If objFSO.FolderExists(dirCliente) Then Set objFile1 = objFSO.GetFile(dirServidor & "\" & Executavel1) Set objFile2 = objFSO.GetFile(dirCliente & "\" & Executavel1) If CDate(objFile1.DateLastModified) <> CDate(objFile2.DateLastModified) Then FileCopy dirServidor & "\" & Executavel1, dirCliente & "\" & Executavel1, True End If Set objFile3 = objFSO.GetFile(dirServidor & "\" & Executavel2) Set objFile4 = objFSO.GetFile(dirCliente & "\" & Executavel2) If CDate(objFile3.DateLastModified) <> CDate(objFile4.DateLastModified) Then objFSO.CopyFile dirServidor & "\" & Executavel2, dirCliente & "\" & Executavel2, True End If End If Else Wscript.Echo "Diretório(s) não existe(m)" End If
Obrigado mesmo pela "luz", André Renato Furtado!
Dei uma modificada para o meu caso, quem precisar está o script, comentado.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const Overwrite = True
dirServidor = "D:\SERVIDOR"
dirCliente = "D:\CLIENTE"
'Modulos Sincronizador: ISAtacadista, ISBusiness, ISPafEcf, ISNotaFiscal, ISFaturamento, ISPontoDeVendas
If objFSO.FolderExists(dirServidor) And objFSO.FolderExists(dirCliente) Then
'-=-=-=-=-=-=-=-=-=-=-=-=- ISAtacadista.exe -=-=-=-=-=-=-=-=-=-=-=-=-
If objFSO.FileExists(dirServidor & "\" & "ISAtacadista.exe") Then
Set objFile1 = objFSO.GetFile(dirServidor & "\" & "ISAtacadista.exe")
If objFSO.FileExists(dirCliente & "\" & "ISAtacadista.exe") Then
Set objFile2 = objFSO.GetFile(dirCliente & "\" & "ISAtacadista.exe")
If objFile1.DateLastModified > objFile2.DateLastModified Or objFile1.DateLastModified < objFile2.DateLastModified Then
'Nova Versão! Copiando do servidor...
objFSO.CopyFile objFile1, dirCliente & "\", Overwrite
Else
'Versão igual, nada será modificado!
End If
Else
'ISAtacadista inexistente! Copiando do servidor..."
objFSO.CopyFile objFile1, dirCliente & "\", Overwrite
End If
Else
WScript.Echo "URGENTE! Entre em contato com a Intech Sistemas"
End IfEnd If