2 votes

comment faire une boucle dans un sous-dossier pour vérifier si le dossier est vide - batch script ?

Ce que je veux faire :

écrire un lot script pour faire ce qui suit parcourir en boucle tous les dir commençant par "01-"... Vérifier si le dossier "Pictures" est vide ou non. Ignorer les autres dossiers. Si le dossier "Pictures" est vide, imprimer le chemin des dossiers "Pictures" vides.

Exemple de sortie :

MainFolder/01-Folder3/Pictures est vide

Structure de mon dossier :

1er niveau... Tout ce qui se trouve dans mon "MainFolder". 2ème niveau... tous les dossiers commencent par un numéro ex : 01, 02, 03, etc... 3ème niveau... Il y a un dossier appelé "Pictures"... dans chaque 3ème niveau. voici un exemple :

|>MainFolder 
|--->01-Folder1
|------->Pictures
|----------->pic.png
|----------->SubPicFolder
|------->RandomFolder1
|------->RandomFolder2
|--->01-Folder2
|------->Pictures
|----------->SubPicFolder
|------->RandomFolder1
|--->01-Folder3
|------->Pictures
|------->RandomFolder1
|--->02-Folder1
|------->Pictures
|------->RandomFolder1
|------->RandomFolder1

Ce que j'ai essayé.. :

@echo off
for /d /r %%A in ("Pictur*") do (
    dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)
pause

Problème avec ce que j'ai essayé :

Ce code imprime tous les dossiers vides "Pictures" mais le problème est qu'il vérifie tous les dossiers. Je veux juste vérifier le dossier commençant par "01-" et le sous-dossier "Pictures", et ignorer le reste.

0voto

Dmitry Zayats Points 1328
for dirname in `find ./ -type d | grep Pictures`; do if [ $(find $dirname -type f|wc -l) -eq 0 ]; then echo "$dirname is empty"; fi; done

Remplacez find ./ par find $RootDir pour votre recherche.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X