Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[Résolu] Suppression fichiers vides


Messages recommandés

Posté(e)

J'ai trouvé un truc : dans la fichier bat, remplace la commande For par la suivante :

 

for /f "tokens=4* delims= " %%i in (zerotxt.txt) do ECHO "%%i %%j"

 

L'astérisque après tokens=4 indique de prendre tous les mots suivants. Le paramètre en fin %%j est requis.

 

J'ai 3 fichiers nommés !

 

Vide1.txt

vide 2.txt (avec espace avant 2)

vide t r o i s.txt (espace entre chaque lettre de trois)

 

Ce qui donne en résultat :

 

 

D:\Fichiers TXT>dir D:\work\*.* | find " 0 " 1>zerotxt.txt

 

D:\Fichiers TXT>for /F "tokens=4* delims= " %i in (zerotxt.txt) do ECHO "%i %j"

 

 

D:\Fichiers TXT>ECHO "vide 2.txt"

"vide 2.txt"

 

D:\Fichiers TXT>ECHO "vide t r o i s.txt"

"vide t r o i s.txt"

 

D:\Fichiers TXT>ECHO "vide1.txt "

"vide1.txt "

 

 

D:\Fichiers TXT>pause

Appuyez sur une touche pour continuer...

 

A tester maintenant pour les noms de dossiers avec espace.

 

A+

 

Notpa

Posté(e)

Merci de ton aide qui m'est précieuse :super:

 

Je sens qu'on tutoie la solution, mais ça ne marche toujours pas

 

Ci-dessous mon batch

dir D:\*.* /s | find " 0 " > zerotxt.txt

 

rem for /f /s "tokens=4* delims= " %%i in (zerotxt.txt) do ECHO "%%i %%j"

 

for /f /s "tokens=4* delims= " %%i in (zerotxt.txt) do DEL "%%i %%j"

 

pause

 

Le fichier zerotxt.txt me montre bien les fichiers à 0 octet, exemple :

01/08/2013 13:21 0 19944278.TXT

02/08/2013 07:47 0 23923260.TXT

02/08/2013 07:52 0 23942645.TXT

 

Ce fichier pèse tout de même 1233 ko, c'est dire s'il y en a !

 

Mais une fois que la fenètre du batch se ferme après son exécution rien n'a été supprimé. :outch:

 

Il ne me reste que très peu de temps, l'entreprise ferme à midi pour 3 semaines, je galère grave.

Posté(e)

Salut strato,

 

Je ne pense pas trouver LA solution avant 13h, d'autant plus que je dois sortir maintenant.

 

J'ai une idée mais elle est à creuser et à vérifier (c'est long. Mais je suis têtu (tu as dû le remarquer !). Déformation professionnelle : 40 ans d’informatique, ça déforme. Pour moi, un programme doit fonctionner parfaitement.

 

Je continuerai donc mes recherches, ne serait-ce que pour les autres et pour moi.

 

Pars-tu en vacances ? Ceci pour vérifier mon BAT sur des fichiers tests que tu auras créé sur ton PC.

 

A+

 

Notpa

Posté(e)

Merci pour ta ténacité.

Non je ne pars pas en vacances (malheureusement) mais la boîte sera fermée.

J'ai des outils de contrôle à distance (logmein) je pourrai donc tester de chez moi, en réel sur le serveur.

Posté(e)

Re,

 

Je crois que j'ai trouvé ! Nouveau fichier BAT :

dir D:\wor
k
\*.* | find " 0 " > d:\zerotxt.txt

 

cd D:\wor
k
\

 

for /f "to
k
en
s
=4* delim
s
= " %%i in (d:\zerotxt.txt) do ECHO D:\wor
k
\"%%i %%j"

 

for /f "to
k
en
s
=4* delim
s
= " %%i in (d:\zerotxt.txt) do del /F D:\wor
k
\"%%i %%j"

 

pau
s
e

Ligne 1:

Liste dans le fichier D:\zerotxt.txt stocké sur la racine de D: la liste des fichiers du répertoire D:\work ayant 0 comme taille

 

Ligne 2:

Bascule sur le répertoire D:\work

 

Ligne 3:

Récupération du 4ème mot (tokens=4*) et suivants à partir du fichier d:\zerotxt.txt, pour chaque ligne du-dit fichier et affiche le nom du fichier

 

Ligne 4:

Idem ligne 3 mais supprime au lieu de lister

 

Ligne 5:

Permet de ne pas fermer la fenêtre DOS pour lire le résultat des commandes passées ci-dessus

 

J'ai testé avec mes 3 fichiers vides ayant ou non des blancs dans le nom. Ça a très bien marché. Les 3 fichiers ont été virés.

 

ATTENTION : cette procédure n'est valable que pour un seul répertoire. Il faut la répéter pour chaque répertoire concerné. Mais plutôt que de répéter ce paquet de lignes 36 fois, le mieux est de ne créer qu'un seul fichier BAT dont le nom du répertoire concerné sera passé en paramètre. Il faudra donc créer un nouveau fichier BAT qui contiendra autant d'appels au BAT ci-dessus qu'il y a de répertoires concernés.

 

Ex :

contenu de DelEmpty.bat :

S
uppVide do
s
s
ier2

S
uppVide do
s
s
ier3

S
uppVide do
s
s
ier4

S
uppVide do
s
s
ier5

S
uppVide do
s
s
ier6

Bien sûr, les fichiers BAT DelEmpty et SuppVide devront être dans le même répertoire, si non, il faudra indiquer le chemin complet

 

Je creuse ça pour le passage de variables à un fichier BAT.

 

Qu'en penses-tu ?

Posté(e)

Simple ! Dans le fichier BAT ci-dessus, il faut remplacer D:\Work\ par la variable %1.

Donc chaque ligne du fichier DelEmpty.bat passera en paramètre le répertoire à nettoyer :

 

SuppVide C:\dossier2\

SuppVide C:\dossier3\sous_dossierA\

SuppVide D:\dossier4\

SuppVide E:\aaa\bb\ccc\dossier5\

SuppVide E:\

 

Bien spécifier le back-slash (\) final.

 

Is it OK ?

 

Notpa

  • 2 semaines après...
  • 2 semaines après...
Posté(e)

Bonjour Notpa

Désolé pour le retard mais j'ai (vraiment) pris des vacances y compris côté boulot

J'ai privilégié le balades en motos, ça permet de s'aérer la tête.

 

Effectivement ta solution fonctionne en environnement "normal"

Mais le mien ne l'est pas !

Le répertoire dans lequel se situe les fichiers vides contient un espace dans le nom (fichiers be), je ne peux pas le supprimer ou le remplacer par un _ sans "casser" tous les liens SolidWorks

D'autre part, ce répertoire contient 10 300 dossiers et sous-dossiers je ne peux donc pas créer un bat supplémentaire les listant tous.

 

Désolé et encore merci pour tes efforts

Rejoindre la conversation

Vous publiez en tant qu’invité. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...