Supprimer contenu répertoire sauf 1 fichier - Shell/Batch - Programmation
Marsh Posté le 02-07-2010 à 10:39:46
ReplyMarsh Posté le 02-07-2010 à 21:27:27
mattwarend2002 a écrit : Y'a pas moyen d'exclure juste ce fichier ? |
Non.
Ou alors tu installes l'interpréteur Python qui te permettra de programmer des algos de traitement automatisés pour zindow (ou Linux) dans lesquels cela sera possible...
Marsh Posté le 02-07-2010 à 23:12:53
Il n'y a pas de commande miracle permettant d'effectuer ce que tu veux en une seule fois
Une solution possible est de supprimer tous les répertoires, puis tous les fichiers à l'execption de celui que tu veux conserver.
Code :
|
Contenu du répertoire share :
C:\Documents and Settings\Jean-Pierre\Mes documents\Tmp>dir /S share |
Jean-Pierre.
Marsh Posté le 06-07-2010 à 14:05:49
aigles a écrit : Il n'y a pas de commande miracle permettant d'effectuer ce que tu veux en une seule fois
Contenu du répertoire share :
|
Bonjour,
Merci pour ta réponse.
Mon répertoire est situé sur un partage réseau.
Pour y accéder, je passe par la lettre de lecteur : S:\
Le chemin est donc S:\Share. (je ne peux pas supprimer le répertoire Share, il est protégé)
Je veux supprimer l'ensemble du contenu du répertoire, sauf le fichier A lire.txt.
J'ai essayé ton script mais ça ne fonctionne pas :
SET Rep=S:\Share
SET Fic=A lire.txt
REM Suppression des répertoires
FOR /D %%d IN (%Rep%\*) DO RMDIR /S /Q %%
REM Suppression fichiers
FOR %%f IN (%Rep%\*) DO (
IF NOT "%%~nxf" == "%Fic%" DEL /F %%f
)
Merci d'avance pour ton aide.
Marsh Posté le 06-07-2010 à 15:26:15
C'est pas très précis comme indication "ça ne fonctionne pas" ...
Dans la commande FOR de suppression des répertoires, il manque le nom de la variable pour le RMDIR
J'ai essayé le script sur mon poste, le disque U: est un disque réseau; cela fonctionne.
Code :
|
L'exécution du script :
======================= |
Si tu as toujours des problèmes, essaye de donner un peu plus de précisions.
Tu peux remplacer ECHO OFF par ECHO ON pour avoir une trace de ce qui est fait.
Jean-Pierre.
Marsh Posté le 06-07-2010 à 17:07:54
Je viens de tester.
Merci ça fonctionne mieux maintenant. Reste 2 répertoires qui ne sont pas supprimés :
1 répertoire nommé Bases Commerciales (vide)
1 autre répertoire nommé pivot Etoil avec 2 fichiers outputSIDEC_1.tar.gz et outputSIDEC_2.tar.gz qui ne sont pas supprimés.
+ 1 fichier à la racine du répertoire nommé -!!!- Contenu Répertoire 97-Temp Supprimé tous les W-E-!!!-.txt
-------
Code :
|
Marsh Posté le 06-07-2010 à 17:15:59
Je pense qu'au moins une partie du problème vient des espaces et caractères spéciaux présents dans les noms de fichiers (il manque la trace de la partie suppressions)
A essayer, mettre les noms de répertoire et fichiers entre guillemets :
Code :
|
Jean-Pierre.
Marsh Posté le 07-07-2010 à 10:56:56
aigles a écrit : Je pense qu'au moins une partie du problème vient des espaces et caractères spéciaux présents dans les noms de fichiers (il manque la trace de la partie suppressions)
|
Un grand merci !!
Ça fonctionne maintenant.
@+
Marsh Posté le 28-07-2010 à 18:33:25
Pour info robocopy permet d'exclure des répertoires/fichiers lors de la copie ou du déplacement.
Il aurait suffit alors de déplacer tout sauf ton fichier vers nul
Marsh Posté le 02-07-2010 à 10:03:12
Bonjour,
Je débute en script .bat et je cherche à supprimer le contenu d'un répertoire.
Le nom du répertoire où je dois supprimer les données est Share.
Il est situé sur un serveur, son emplacement est précisemment X:\Share
Ce que je veux faire c'est :
- supprimer tous les fichiers et répertoires, y compris les sous-répertoires, et les données incluses.
- Ne laisser qu'un seul fichier nommé A lire.txt qui est à la racine.
Une personne peut-elle m'aider SVP ?
Merci.