2016-03-29 3 views
3

Je suis un novice, mais j'essaie de créer un fichier batch qui lit le contenu du dossier de la source, compare les fichiers à la destination, sauvegarde les correspondances et déplace ensuite les fichiers source vers la destination. Je suppose que d'une certaine manière le contenu du fichier dans le répertoire source fonctionne comme un masque.Sauvegarder des fichiers spécifiques avant de les remplacer en fonction du contenu du dossier source du lot

Y a-t-il une technique que je pourrais utiliser pour obtenir ce résultat? J'ai essayé Robocopy et XCopy avec près mais pas ce que je cherche. XCopy a une option exclure mais c'est le contraire de ce dont j'ai besoin. Toutes les suggestions seraient très appréciées.

La mise en place est comme ceci:

Ces dossiers contiennent ce

Parent_folder_new 
Folder1  Folder2  Folder3 
    File1   File1  File1 
    File2   File2  File2 
    File3   File3  File3 

J'ai de nouveaux fichiers pour remplacer l'ancien:

Parent_folder_old 
Folder1  Folder2  Folder3 
    File2  File1  File1 
    File3      File3 

Avant les fichiers source écrasent ceux de destination Je n'ai besoin de sauvegarder que les fichiers qui seront bientôt remplacés.

J'ai essayé une instruction if, mais je ne sais pas où aller après

Set folder[1]=folder1 
Set folder[2]=folder2 
Set folder[3]=folder3 

for F "tokens=2 delims==" %%f in ('set folder[') do (
    if Parent_folder_new\%%f==Parent_folder_old\%%f 
::copy results of if statement to Parent_folder_backup\%%f 
) 

J'espère que cela éclaircit un peu de ce que je suis en train de faire.

+0

S'il vous plaît partager ce que vous avez essayé et décrire exactement ce que vous avez des problèmes avec, alors nous pourrions être en mesure de vous aider. – aschipfl

+0

J'ai mis à jour les détails, j'espère que cela aide – Sid

+2

Votre approche semble être un peu unflexible car il pourrait y avoir plus de 3 dossiers dans l'emplacement parent; Y a-t-il un seul niveau de répertoire, ou est-ce un arbre plus profond? si ce dernier est vrai, voulez-vous gérer uniquement le premier niveau de répertoire et ignorer les éléments les plus profonds? de toute façon, si je l'ai bien compris, vous pouvez utiliser 'xcopy/L/U' pour obtenir une liste des fichiers qui seront copiés ('/L' dit 'xcopy' pour simplement lister les éléments mais n'en copier aucun) et l'utiliser comme l'entrée pour un travail de sauvegarde, puis utilisez 'xcopy/U' (sans le commutateur'/L' pour vraiment copier cette fois) ... – aschipfl

Répondre

0

J'utiliser pour copier les fichiers

copy /y C:\path\folder1 C:\destination 

et ce pour le déplacer

move /y C:\path\folder1 C:\destination

Vous devrez changer le folder1 dans un dossier que vous voulez. J'ai utilisé ceci pour sauvegarder mes thumbdrives. Il suffit de copier ceci dans un fichier name.bat et vous êtes prêt!