Suppression en batch de fichiers absent d'une liste
Résolu/Fermé
Angelus_h
Messages postés
3
Date d'inscription
jeudi 15 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
-
15 avril 2021 à 10:03
Angelus_h Messages postés 3 Date d'inscription jeudi 15 avril 2021 Statut Membre Dernière intervention 20 avril 2021 - 20 avril 2021 à 08:21
Angelus_h Messages postés 3 Date d'inscription jeudi 15 avril 2021 Statut Membre Dernière intervention 20 avril 2021 - 20 avril 2021 à 08:21
A voir également:
- Suppression en batch de fichiers absent d'une liste
- Liste déroulante excel - Guide
- Forcer suppression fichier - Guide
- Liste déroulante en cascade - Guide
- Fichier batch - Guide
- Renommer plusieurs fichiers en même temps - Guide
3 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
15 avril 2021 à 20:08
15 avril 2021 à 20:08
Bonjour,
Peut-être comme ça :
Peut-être comme ça :
pushd %origine% for %%A in (*.CTS *.DST) do findstr "%%~nA" listing.lst >nul || del /f "%%~fA" popd pushd %disque% for %%A in (*.CTS *.DST) do findstr "%%~nA" listing.lst >nul || del /f "%%~fA" popd
Angelus_h
Messages postés
3
Date d'inscription
jeudi 15 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
19 avril 2021 à 08:18
19 avril 2021 à 08:18
Merci pour cette réponse qui est presque parfaite.
Si j'ajoute les 0 dans le listing, ça marche.
Mais le listing n'est pas généré avec les 0
Les fichiers sont toujours sur 8 caractères (les vides sont remplacés par des 0)
Exemple :
00000005.CTS
00000112.DST
Si j'ajoute les 0 dans le listing, ça marche.
Mais le listing n'est pas généré avec les 0
Les fichiers sont toujours sur 8 caractères (les vides sont remplacés par des 0)
Exemple :
00000005.CTS
00000112.DST
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
Modifié le 19 avril 2021 à 19:35
Modifié le 19 avril 2021 à 19:35
Ok dans ce cas tu peux faire comme ceci :
@echo off setlocal enabledelayedexpansion set "origine=D:\ORIGINE" set "disque=Z:\Sauvegarde" rem copie du listing le plus récent entre les deux disques xcopy "%origine%\listing.lst" "%disque%\" /D /Q /Y xcopy "%disque%\listing.lst" "%origine%\" /D /Q /Y rem suppression des fichiers *.DST et *.CTS n'appartenant pas à la liste sur les deux disques call :suppression "%origine%" "%TMP%\listing_bis.txt" call :suppression "%disque%" "%TMP%\listing_bis.txt" rem actualisation de l'ensemble des fichiers sur les plus récents xcopy "%origine%\*.*" "%disque%\" /D /Q /Y xcopy "%disque%\*.*" "%origine%\" /D /Q /Y exit :suppression cd /d %1 & type nul >%2 for /f "tokens=1 delims= " %%E in (listing.lst) do ( set "index=00000000%%~nE" echo.!index:~-8!>>%2 ) for %%A in (*.CTS *.DST) do find "%%~nA" %2 >nul || del /f "%%~fA" goto :eof
Angelus_h
Messages postés
3
Date d'inscription
jeudi 15 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
20 avril 2021 à 08:21
20 avril 2021 à 08:21
Merci beaucoup !
Bonne idée le fichier temporaire, ça marche parfaitement.
Bonne idée le fichier temporaire, ça marche parfaitement.