comme je ne suis pas certain qu'on parle de la même "source", l'autre dossier se trouve à cette ligne :
dir \\live.sysinternals.com\tools -recurse | foreach {
Pour moi la source est le répertoire de sauvegarde sur le serveur. La source elle est le répertoire à sauver sur le client.
Si je comprends bien ton message, le rapport client-serveur est inversé dans le présent script:
La cible serait c:\sysint.
La source serait \\live.sysinternals.com\tools.
Est-ce bien ça ?
c'est bien ça
Mon idée du moment est la suivante:
- lister l'ensemble des fichiers présents sur le dossier à récupérer (c:\données).
- copier cette liste dans un document texte daté à la date du jour. Nous l'appellerons "liste.txt"
- chercher les différences de noms de fichier existant entre ce qui se trouve dans c:\données et le fichier "liste[date].txt" de J-7.
- Supprimer du serveur (\\serveur\sauvegarde\%username%) tout ce qui s'y trouve et qui ne figure pas dans le "liste[date].txt" de J-7
pourquoi passser par une liste texte ? c'est autant garder ça dans un tableau en mémoire
attention aux dossiers et sous dossiers, il faut parcourir les fichiers 1 à 1
il faut aussi vérifier avec la date de dernière écriture du fichier, juste le nom ne suffit pas
pour info, en powershell les commentaires commencent par "#"
param s'utilise en 1x, en séparent les différents paramètres par des ","; par exemple
Param($a, $b)if( !$sysIntDir.endsWith("\")) { $sysIntDir+="\" } sert à rajouter si nécessaire un "\" à la fin du nom du répertoire
dir $dataDir -recurse | foreach > c:\donnees[date].txt la redirection vers un fichier texte est inutile, le résultat se trouve en mémoire, de plus la syntaxe n'est pas bonne, ça va planter direct au lancement

on compare les dates de modif directement entre dossier source et destination, pourquoi passer par un fichier temporaire ?
if (c:\donnees[date].txt -gt c:\donnees[date-7].txt) du coup cette ligne n'est plus bonne, elle comparait la date de dernière écriture entre les 2 fichiers,
-gt correspond à
greater càd plus grand que; autrement dit, si la date de dernière écriture du fichier source est plus grande que celle du fichier destination -> on copie
bon bah, je terminerai ma version, je crois que ça sera plus simple et plus rapide

voilà rapidement la bonne structure:
fonction copie(source, destination)
pour chaque élément dans le dossier source
si dossier
vérifier qu'il existe dans la destination, sinon le créer
appel récursif à fonction copie en rajoutant le dossier trouvé aux 2 chemins (source et destination)
passer à l'élément suivant
sinon
si fichier existe dans dossier destination
si date de modification fichier source > date modification fichier destination alors recopier le fichier de source dans destination en écrasant le fichier présent
sinon copier le fichier dans le dossier de destinationaprès ça, tralala similaire pour effacer les fichiers (et dossier) présent dans destination mais pas dans source