Newsgroup: it.comp.lang.visual-basic
Titolo: Copia sequenziale di files e cartelle

All'interno di un'applicazione, avrei bisogno di effettuare una copia
sequenziale (su Lan) di files e cartelle, ricavandone i rispettivi
path da una tabella access.
L'utente dovrebbe in pratica limitarsi a schiaccciare un tasto.
Ho provato ciclando sul recordset e utilizzando Robocopy.exe del
ResKit NT (che tra l'altro usa l'API CopyFileEx), ma non trovo il modo
di controllare quando l'eseguibile termina di copiare il primo file
per poi far proseguire con MoveNext e lanciarlo di nuovo (o almeno
questo è il ragionamento che son riuscito a fare, pena ritrovarmelo
qualche milionata di volte in esecuzione nel Task Manager).
In rete son riuscito a trovare solo esempi di copia di singoli files,
non sequenziali.
Qualcuno saprebbe suggerimi una soluzione o indicarmi un'altra strada?
Ciao
@Pino


wrote:

Subito dopo il post, mi sono accorto di aver pestato la cacca "shell",
e ho scaricato dall'SC le possibili soluzioni.
Il punto è che non riesco a integrarle con il ciclo sul recordset.
E' possibile fare una cosa del genere? Se sì, Qualcuno ha già
sperimentato questo tipo di soluzione e spiegarmi concettualmente come
muovermi?
Sto anche tentando di utilizzare Wsh, ma credo di complicarmi
ulteriormente la vita.
Altre soluzioni?
Ciao
@Pino

 Sto anche tentando di utilizzare Wsh
*.vbs
'Se i file in destinazione sono piu vecchi di quelli
'in partenza vengono sovrascritti altrimenti no'
'Ps: non vengono incluse subfolder solo le due
'principali "dichiarate" Partenza>Destinazione
'inizio
sSource = "c:\Partenza\"
sTarget = "c:\Destinazione\"
Set oFSO = CreateObject("Scripting.FileSystemObject")
With oFSO
  For Each oFile In .GetFolder(sSource).Files
    If .FileExists(sTarget & oFile.Name) Then
      If .GetFile(oFile).DateLastModified > _
         .GetFile(sTarget & oFile.Name).DateLastModified Then
        oFile.Copy(sTarget & oFile.Name)
      End If
    Else
      oFile.Copy(sTarget & oFile.Name)
    End If
  'End With
  Next
End With
'fine
--
Fosco

'principali "dichiarate" Partenza>Destinazione
[CUT Codice]
Grazie per la risposta.
Il mio problema è copiare in rete preservando anche le subfolder.
Ho risolto con CopyFolder (chissà perchè ero convinto non lavorasse
con l' UNC).
Wsh era perchè trafficavo con MapNetworkDrive ecc..
Hai idea di come implementare in questo caso una progressbar
processando i kb o il numero di blocchi copiati?
Ciao
@Pino
PS: Il tuo codice mi verrà sicuramente utile comunque.

 processando i kb o il numero di blocchi copiati?
Option Explicit
Dim oSHApp  ' as object
Dim sSrc, sDest  ' as string
Set oSHApp = CreateObject("Shell.Application")
  sSrc = "C:\WINDOWS\TEMP\Vario\*.*"
  sDest = "C:\WINDOWS\TEMP\Prova\"
' usa la ms Animated Copy Applet, mostra nomi dei files e progressbar...
  oSHApp.Namespace(sDest).CopyHere sSrc
Set oSHApp = nothing
WScript.Quit
'  Questo sotto SPOSTA i files invece di copiarli
'  oSHApp.Namespace(sDest).MoveHere sSrc
' se i files sono gia' presenti ti apparira la richiesta di sovrascrivere
Questo sotto e' l'help del WSH con numerosi esempi ( sopra il mega)
http://download.microsoft.com/download/winscript56/Install/5.6/W982KMe
XP/EN-US/scrdoc56en.exe
(tuttosuunsrigasenononfungecopiaincollaunpezzopervolta)
--
Fosco