Tester et supprimer des fichiers dans différents répertoires

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Tof
Batcheur occasionnel
Messages : 3
Enregistré le : 08 août 2011 19:24

Tester et supprimer des fichiers dans différents répertoires

Message par Tof »

Bonjour,
Je tente de développer un batch qui compare le contenu de deux répertoires différents et qui supprime les fichiers du premier répertoire (source) s'ils se trouvent dans l'autre répertoire (archive).
Pour les essais, j'ai créé sur mon disque 1 répertoire "source" qui contient 2 fichiers (test1.txt et test2.txt) et un répertoire "archive" qui contient 1 fichier (test1.txt)

Le code que j'utilise est le suivant :
REM initialisation de variables
setlocal enabledelayedexpansion
setlocal enableextensions
REM boucle de suppression
FOR /R c:\test\source\%%a IN (*) DO if exist c:\test\archive\%%a del c:\test\source\%%a

Le problème c'est que la variable %%a stocke le chemin complet d'accès aux fichiers du répertoire source (c:\test\source\test1.txt et c:\test\source\test2.txt).
La commande "if exist" ne permet pas de les retrouver puisqu'elle cherche dans "c:\test\archive" un fichier qui se nommerait "c:\test\source\test1.txt" et un autre qui se nommerait "c:\test\source\test2.txt".
Est il possible de n'attribuer à la variable %%a que le nom des fichiers contenus dans le répertoire source (test1.txt et test2.txt sans référence au chemin d'accès) ?

Merci pour votre aide.
plopi
Batcheur débutant
Messages : 16
Enregistré le : 04 mars 2011 00:10

Re: Tester et supprimer des fichiers dans différents répertoires

Message par plopi »

Peut être essayer de coupler la commande "FOR" ( /F ) avec "DIR" ( /b )

Code : Tout sélectionner

FOR /F %%a ( dir /a:-d /b c:\test\source\ ) DO 
 
Sinon pour ce genre de manips jeter un oeil à la commande :

Code : Tout sélectionner

forfiles /?
Tof
Batcheur occasionnel
Messages : 3
Enregistré le : 08 août 2011 19:24

Re: Tester et supprimer des fichiers dans différents répertoires

Message par Tof »

Merci de l'aide. Je vais essayer d'appliquer les conseils et vous tiens informés du résultat.
@+
Tof
Batcheur occasionnel
Messages : 3
Enregistré le : 08 août 2011 19:24

Re: Tester et supprimer des fichiers dans différents répertoires

Message par Tof »

Ca y est, ça marche. J'ai adapté la commande proposée de la manière suivante :
FOR /F %%a in ('dir /a:-d /b c:\test\source') DO ...
La routine ne sort plus que le nom des fichiers contenus dans le répertoire; ce que je voulais. Ca marche très bien avec quelques fichiers que j'ai créé pour mes tests.
Le problème que je rencontre "dans la vraie vie", c'est que ce n'est pas moi qui crée et nomme les fichiers. De ce fait, je dois traiter des fichiers comportant des caractères accentués et surtout des espaces et là, ça ne marche plus.
Pour l'exemple, si je traite un fichier nommé "testé 1.txt" la valeur de la variable %%a est "testé".
J'ai tenté de mettre des guillemets autour, mais ça ne change rien.
Si quelqu'un a une idée, je suis preneur.
Merci
Répondre