Listing dossier/sous-dossier bien spécifique

Fermé
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 - Modifié le 7 juin 2019 à 03:52
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 3 juil. 2019 à 20:04
Bonjour,
après des recherches infructueuses et de nombreux essais peut convainquants, je me tourne vers vous.

J'ai un répertoire "C:\Users\Moi\Desktop\DOSS_PHOTOS"
dans ce répertoire il ya des fichiers, des dossiers, mais surtout des photos. Les dossiers contiennent aussi des photos qui ont été classées.

Par exemple dans le "DOSS_PHOTOS" on peut trouver :

DOC1.txt
DOC2.txt
IMG_8597.jpg
IMG_8598.CR2
IMG_8599.jpg
SOUS_Dossier

et dans le dossier "SOUS_Dossier", on peut trouver :

DOC3.txt
IMG_85992 3.JPG

Ce que je cherche à faire, c'est de lister DOSS_PHOTOS et sous sous-dossiers (et au passage me convertir les .JPG en.jpg).

Pour cela j'ai bien une commande qui me fait ça:

@echo off
dir C:\Users\Moi\Desktop\DOSS_PHOTOS /s > liste_photos.txt
rename *.JPG *.jpg


et ça me donne ça :

Le volume dans le lecteur C s'appelle OS Win10
Le num‚ro de s‚rie du volume est 5861-1206

R‚pertoire de C:\Users\Moi\Desktop\DOSS_PHOTOS

07/06/2019 03:16 <DIR> .
07/06/2019 03:16 <DIR> ..
06/06/2019 21:34 0 DOC1.txt
06/06/2019 21:35 0 DOC2.txt

30/05/2019 11:22 6ÿ139ÿ507 IMG_8597.jpg
30/05/2019 11:22 25ÿ635ÿ442 IMG_8598.CR2
05/06/2019 02:26 9ÿ729ÿ265 IMG_8599.jpg
07/06/2019 03:16 0 liste_photos.txt
07/06/2019 03:13 <DIR> SOUS_Dossier
07/06/2019 03:16 106 script_ListePhotos.bat
9 fichier(s) 41ÿ504ÿ539 octets

R‚pertoire de C:\Users\Moi\Desktop\DOSS_PHOTOS\SOUS_Dossier
07/06/2019 03:13 <DIR> .
07/06/2019 03:13 <DIR> ..
06/06/2019 21:39 0 DOC3.txt
30/05/2019 11:22 6ÿ139ÿ507 IMG_85992 3.JPG
2 fichier(s) 6ÿ139ÿ507 octets

Total des fichiers list‚sÿ:
11 fichier(s) 47ÿ644ÿ046 octets
5 R‚p(s) 15ÿ653ÿ994ÿ496 octets libres


Et franchement c'est pas trop lisible là… pour le test ça va encore. mais lorsque j'aurais les 3 milles photos dans un dossier, ça va être compliqué :s

Au final je veux juste lister les noms de dossiers, sous dossier et le contenu, pour savoir quelle photos sont classée, pour pouvoir savoir les-quelles sont à retoucher.


Voici un exemple de ce que je cherche à obtenir :


J'ai bien essayé un truc du genre:

@echo off
dir /B C:\Users\Moi\Desktop\DOSS_PHOTOS\ > fichier.txt


ça se rapproche, mais pour le coup il me manque certaines infos… :/

Auriez-vous une piste s'il vous plait?

P.S.: il n'y a pas moyen de corriger les erreurs (que j'ai entouré sur mon image)

Configuration: XP et Windows 7


A voir également:

4 réponses

NHenry Messages postés 15175 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 25 décembre 2024 350
7 juin 2019 à 18:13
Les , et ÿ sont dû à un encodage incorrecte de ta sortie, il remplacent respectivement un é et un espace insécable.
1
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 8
7 juin 2019 à 19:59
Bonjour, merci pour cette info. J'ai essayé de corriger ça, mais je n'ai pas réussi…Parcontre avec la commande "chcp 1252 > nul"ça fonctionne. il n'y a plus d'accents.


Enfin ça c'est du détail, ça n'a pas résolu mon problème sur le contenu :/
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 7 juin 2019 à 19:34
Bonjour,

Ca devrait ressembler à quelque chose comme ça :
@echo off
setlocal enableextensions
chcp 1252 >nul

for /f "delims=" %%A in ('dir /b /s "%USERPROFILE%\Desktop\DOSS_PHOTOS"') do (
echo %%A >> fichier.txt
if "%%~xA"==".JPG" (ren "%%~A" "%%~nA.jpg")
)

notepad fichier.txt



0
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 8
7 juin 2019 à 20:35
heu...
en fait ce que je cherche à faire depuis quelques jours, c'est "simplement" un truc du genre


Répertoire principal C:\users\Moi\Bureau\DOSS_Photos

Sous dossier C:\users\Moi\Bureau\DOSS_Photos\Photos_début

Doc1.txt
IMG_0001.jpg
IMG_0002.jpg
IMG_0003.jpg
IMG_0004.jpg
IMG_0005.jpg
IMG_0006.jpg

6 fichier(s) photos 660 octets


Sous dossier C:\users\Moi\Bureau\DOSS_Photos\RAWPhotos_début

IMG_0001.CR2
IMG_0002.CR2
IMG_0003.CR2
IMG_0004.CR2
IMG_0005.CR2
IMG_0006.CR2

6 fichier(s) RAW 13660 octets

Total des fichiers photos dans DOSS_Photos :

12 fichier(s) 14320 octets

-----------
un peut comme sur l'image présenté plus haut. est-ce possible à faire déjà ?
0
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 8
Modifié le 7 juin 2019 à 20:45
p.s.: pour le même résultat j'avais bien déjà essayé le code suivant :

@ echo off
chcp 1252 >nul

rename *.JPG *.jpg

dir /B /s "C:\users\Moi\Bureau\DOSS_Photos" > résultat_SCRIPT4.txt


Mais c'est pas le but recherché. :s

ha! tiens! bizarre, maintenant mon fichier qui se crée à un problème d'accent… ce qui n'était pas le cas avant :s
Pfff! jcomence à chauffer là :(
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019
7 juin 2019 à 21:09
J'avoue que j'ai du mal à comprendre le but recherché, mis à part le renommage des JPG en jpg.

Je croyais que tu voulais un listing, si tu veux un listing "aéré" comme tu le montres dans tes messages, il suffit d'enlever le commutateur /b de la commande DIR

Concernant les accents, tu peux aussi essayer chcp 28591 >nul
0
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 8
7 juin 2019 à 22:26
Coucou. En effet je veux un listing. :)

le commutateur B me sert à épurer le contenu (peut être un peut trop oui).
Sans le /B, c'est à quelques choses prêt le résultat recherché, sauf qu'il y a des infos que je ne veux pas :

les 2 premières lignes, les dates et heures. et la taille de chaque fichier. Dans l'idéal j'aurais aimé modifier légèrement la présentation, car pour 3 fichiers de test ça va, mais pour 4 To de fichiers, ça va être illisible et trop encombré. Ce qui, dans ma vision, se rapproche de l'image que j'ai publié.

-
Les accents sont correctement "modifiés" dans le document, c'est sur le nom du fichier que ça ne fonctionne plus. :/
pour le coup avec 252 ou 28591, ça ne change rien. :s
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019
Modifié le 7 juin 2019 à 23:35
On va supprimer les lignes inutiles :
dir /s "C:\users\Moi\Bureau\DOSS_Photos" | findstr /v "volume octets" > resultat_SCRIPT4.txt

Est-ce que ça te convient ?

Il reste encore à supprimer la date et l'heure.
0
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 8
Modifié le 18 juin 2019 à 04:46
Bonjour… bon, j'ai essayé…
ça n'a pas été facile du tout pour un novice, mais après de longue recherches et beaucoup de lecture et énormément d'essais infructueux, j'ai réussi à me bricoler un truc…
le problème est que c'est justement seulement un "truc" de novice.

Et il y a surement beaucoup d'erreur. Et il me semble bien qu'il y a aussi des trucs pas trop logiques, mais qui fonctionnent à peut-prêt. Et puis il y a aussi des trucs que je n'ai jamais réussi à faire fonctionner malgré le temps et les tentatives d'essais décevantes.


Donc si un connaisseur à un petit peut de temps à perdre en m'accordant l'honneur de sa correction, je lui en serais très reconnaissant. :)

--
EDIT : heu… désolé pour les pavés :s je ne pensé pas que c'était si long. Désolé pour la présentation médiocre, j'ai fait de mon mieux pour que ce soit plus compréhensible...
--

Premièrement, voila mon plan:

Création de l'album : 
sur disque d'archivage, créer (pour la première utilisation seulement) le document .BAT intitulé "Création album photos (avec sous-dossiers)"
(c'est ce script qui servira à créer les albums photos lorsque ce sera nécessaire.)

chemin complet: D:\Mes photos\Albums_photos ...

- Exécuter le script précédemment mentionné.

le code :


L' "Album_photos" est alors créé avec l'arborescence suivante :


- Album_photos
---- JPG
---- RAW
---- retouches&montage
-------- montage
-------- retouches

détails des dossiers :

Album_photos : contient le script de listing "Script_Listing.bat" et le résultat du script "Résultat_Listing.txt". Pourrait aussi contenir d'autres documents…

JPG : contient principalement les fichiers photos en .jpg et peut aussi contenir par erreur des documents

RAW .CR2

RAW: contient principalement des documents RAW .CR2 et peut aussi contenir par erreur des fichiers photos en .jpg

retouches&montage : les sous-dossiers peuvent contenir principalement des .jpg, peut-être des .CR2 et surtout des documents .tng, . pfi, .psd, .Ai et des .png, docx

pour "montage" : .tng, . pfi, .psd, .Ai, .png, docx, .jpg, .CR2

pour "retouches" : .jpg, .CR2, . pfi, . psd




Voici donc mon doc BAT pour la "Création album photos (avec sous-dossiers)"à priori ça c'est bon.


@echo off
chcp 1252 >nul

echo.
echo.
echo.

set /p name= . Intitulé de l'album photos à créer :
rem Amélioration à faire pour la création du nom, pour poser les questions 'année', 'moi', '(jour)' ['Département', 'ville'] 'intitulé'
rem Les albums photos sont intitulés sur ce modèle : 2019, 06 (le 17) [BRETAGNE, Erquy] Photos des mariés n°52 sur les falaises

md "%name%"
cd %name%
md JPG
md RAW
md retouches"&montage\montage
md retouches"&montage\retouches


Ensuite viens le bat du script : Script_Listing.bat



@ echo off
chcp 1252 >nul

rename *.JPG *.jpg
rem voir si le "rename" fonctionne aussi pour les sous-dossiers... à priori non. Fonctionne que dans le dossier principal "%CD%" ... à modifier! surtout pour dossier %cd%\JPG


rem --------------------------------------------- début script ---------------------------------------------

(echo.
for /f "tokens=*" %%i in ("%CD%") do echo Nom de l'album Photos : '%%~ni'
rem A afficher la taille du dossier DOSS_PHOTOS, convertir en Mo si possible. Pas réussi.
rem ne comptabiliser que les JPG, CR2 pour le calcul de la taille du dossier
echo.
for /f "tokens=*" %%i in ("%CD%") do echo Chemin d'accès : '%%~i'

echo.
echo.
echo ------------

rem ! compter le nombre de fichiers if not exist "%CD%\*.*" (echo ^(0 fichier^)) else for /f %%i in ('dir "%CD%" /a:-d ^| find "fichier"') do echo ^(%%i fichiers^) fonctionne pas comme prévu .
rem ! à ajouter en début de la prochaine commande.
echo.
for /f "tokens=*" %%i in ("%CD%") do echo Documents présents dans dossier '%%~ni' :
echo.
if not exist "%CD%\*.*" (echo aucun fichier supplémentaire ) else (dir /b /a-d "%CD%" | findstr /m /v /i /c:".*")
rem A FAIRE : !! si il existe dans le dossier principal %CD% des fichiers autre que Script_Listing.bat et Résultat_Listing.txt, il faut les afficher, sinon marquer "aucun". Mais pas réussi à faire !
rem ajouter la commande pour savoir combien il y a de fichiers, avec condition idem que dessus. Mais pas réussi à utiliser la commande comme celle que j'utilise dans une autre partie. à priori conflit possible...
rem A FAIRE : !! A mettre des espaces, ou alinéas, devant la liste des fichiers pour les aligner à peut-pret sous le f de "Dossier fichiers", mais pas réussi
echo.
echo.
echo -------------------------

rem ------------------ PARAGRAPHE " Dossier Photos JPG " : ------------------

for /f "tokens=*" %%i in ("%CD%\JPG") do echo|set /p= . Dossier Photos '%%~ni' & if not exist "%CD%\JPG\*.jpg" (echo ^(0 fichier^)) else for /f %%i in ('dir "%CD%\JPG" /a:-d ^| find "fichier"') do echo ^(%%i fichiers^) !ajouter poids!

rem A FAIRE : !! A afficher la taille du dossier, à la suite du nombre de fichiers dispo, mais pas trouvé
rem A FAIRE : !! A mettre des espaces, ou alinéas, devant la liste des fichiers pour les aligner à peut-pret sous le P de "Dossier Photos", mais pas réussi

rem sauvegarde commande : première commande toute simple utilisée, avant remplacement pour conditions : dir /b "%CD%\RAW\*.CR2"
echo.
if not exist "%CD%\JPG\*.jpg" (echo /!\ aucun .jpg n'est archivé dans ce dossier) else (dir /b /a-d "%CD%\JPG" | findstr /m /v /i /c:".CR2")

rem sauvegarde commande : autre commande possible, mais n'indique pas "aucun" : dir /B "%CD%\JPG\*.jpg"
echo.
echo.
for /f "tokens=*" %%i in ("%CD%\JPG") do echo|set /p= & for /f %%i in ('dir "%CD%\JPG\*.CR2" /a:-d ^| find "fichier"') do echo ^(%%i^) documents mal placés :

rem A FAIRE : !! mettre une condition: si moins de 1, mettre "documents mal placés" au singulier...sinon mettre au pluriel. mais pas trouvé comment faire.
rem A FAIRE : !! A ajouter un saut de ligne entre "documents mal placés" et la liste des docs, mais pas trouvé comment ajouter espaces sans planter la mise en page sur les deux conditions...

if not exist "%CD%\JPG\*.CR2" (echo documents mal placés : & echo aucun) else (dir /b /a-d "%CD%\JPG" | findstr /m /v /i /c:".jpg")

rem A FAIRE : !! A ajouter un saut de ligne entre "documents mal placés" et la liste des docs, mais pas trouvé sans tout foirer avec la première ligne de condition plus haut
rem A FAIRE : !! A mettre des espaces, ou alinéas, devant la liste des fichiers pour les aligner à peut-pret sous le m de "documents mal placés".
rem !!!!!! afficher sur partie 'documents mal placés' TOUT ce qui n'est pas du .jpg... et ce qui n'est pas un dossier bien sur...

rem sauvegarde commande : 1ère commande toute simple utilisée, avant remplacement pour conditions "documents mal placés" : dir /b /a-d "%CD%\CR2" | findstr /m /v /i /c:".CR2"
echo.
echo.
echo ----------------------

rem ------------------ PARAGRAPHE " Dossier fichiers RAW " : ------------------

for /f "tokens=*" %%i in ("%CD%\RAW") do echo|set /p= . Dossier fichiers '%%~ni' & if not exist "%CD%\RAW\*.CR2" (echo ^(0 fichier^)) else for /f %%i in ('dir "%CD%\RAW" /a:-d ^| find "fichier"') do echo ^(%%i fichiers^) !ajouter poids!

rem A FAIRE : !! A afficher la taille du dossier, à la suite du nombre de fichiers dispo, mais pas trouvé
rem A FAIRE : !! A mettre des espaces, ou alinéas, devant la liste des fichiers pour les aligner à peut-pret sous le f de "Dossier fichiers", mais pas réussi
echo.
if not exist "%CD%\RAW\*.CR2" (echo /!\ aucun .CR2 n'est archivé dans ce dossier) else (dir /b /a-d "%CD%\RAW" | findstr /m /v /i /c:".jpg")

echo.
echo.
for /f "tokens=*" %%i in ("%CD%\RAW") do echo|set /p= & for /f %%i in ('dir "%CD%\RAW\*.jpg" /a:-d ^| find "fichier"') do echo ^(%%i^) documents mal placés :

rem A FAIRE : !! mettre une condition: si moins de 1, mettre "documents mal placés" au singulier...sinon mettre pluriel. mais pas trouvé.
rem A FAIRE : !! A ajouter un saut de ligne entre "documents mal placés" et la liste des docs, mais pas trouvé comment faire, comme celle du paragraphe précédent.

if not exist "%CD%\RAW\*.jpg" (echo documents mal placés : & echo aucun) else (dir /b /a-d "%CD%\RAW" | findstr /m /v /i /c:".cr2")

rem A FAIRE : !! A ajouter un saut de ligne entre "documents mal placés" et la liste des docs, mais pas trouvé pour que la liste des fichiers du else ait aussi un saut de ligne
rem A FAIRE : !! A mettre des espaces, ou alinéas, devant la liste des fichiers pour les aligner à peut-pret sous le f de "Dossier fichiers", mais pas réussi
rem !!!!!! afficher sur partie 'documents mal placés' TOUT ce qui n'est pas du .CR2 et ce qui n'est pas un dossier bien sur...

echo.
echo.
echo ----------------------

rem ------------------ PARAGRAPHE '' Retouches et Montages '' : ------------------

for /f "tokens=*" %%i in ("%CD%\retouches^&montage") do echo|set /p= . Dossier '%%~ni' & if not exist "%CD%\retouches^&montage\*.*" (echo ^(0 fichier^)) else for /f %%i in ('dir "%CD%\retouches^&montage" /a:-d ^| find "fichier"') do echo ^(%%i fichiers^) !ajouter poids!

rem heu.. en même temps est-ce utile de mettre la fonction %%~ni pour afficher automatiquement le nom du dossier, alors qu'il est renseigné manuellement après le 'tokens'...
rem dans tous les cas, il n'y aura pas de 100% automatique... alors est-ce utile de charger le script avec cette ''option'' ...

rem A FAIRE : !! A afficher la taille du dossier, à la suite du nombre de fichiers dispo, mais pas trouvé... modif : pour le coup, risque d'être inutile. à confirmer...
rem A FAIRE : !! A mettre des espaces, ou alinéas, devant la liste des fichiers pour les aligner à peut-pret sous le r de "Dossier retouches et montage", mais pas réussi
rem A FAIRE idée : !! voir pour lister les 2 sous-dossiers (retouche + montage) et indiquer devant chaque fichier dans quel dossier les docs se trouvent... voir pour créer une arborescence ?
rem ou simplement afficher comme les dossiers photos le dossier retouche puis en dessous le dossier montage ...
echo.

if not exist "%CD%\retouches^&montage\*.*" (echo /!\ aucun doc n'est archivé dans ce dossier) else (dir /b /a-d "%CD%\retouches^&montage\*.*" | findstr /m /v /i /c:"*.*")

rem !!! A CORRIGER : bon,je sèche, j'ai essayé tout ce que je pouvais pour les extension des nom de fichier, même en renommant le dossier par RETOUCHE par exmple, mais ya toujours un truc qui plante. je n'y arrive pas :(
rem extensions possibles : .tng, . pfi, .psd, .Ai, .png, docx, .jpg, .CR2, .docx
echo.
echo.
echo.
echo.
rem --------------------------------------------- Fin du script ---------------------------------------------



rem !!! attention : possibilité de sous-dossiers supplémentaires pour les photos "ne pas diffuser", à comptabiliser !...
rem il se peut que certains dossiers ne soient pas toujours présents
rem (voir si besoin d'ajouter un autre dossier pour les vidéos.)


echo.


) > Résultat_Listing.txt

rem ----------------------------- Voir pour faire création automatique d'un document .bat qui me met tout ce code, à partir du document .bat qui me crée automatiquement les dossiers. voir si nécessaire...
rem rectification : c'est inutile, puisque les album photos n'auront pas les mêmes noms, donc il faudra que je modifie à chaque fois les chemins d'accès... donc autant le fair manuellement à chaque fois :/



Et enfin un aperçu du résultat désiré :


 
Nom de l'album Photos : 'souvenir'

Chemin d'accès : 'C:\Users\Micka\Desktop\AZ\DOSS_PHOTOS\-script création album photo\souvenir'


------------

Dossiers présents dans ce répertoire : (pas mis dans le script. faut que je rajoute)
---- JPG (les tirés devant les dossiers sont juste pour montrer la mise en page)
---- RAW
---- retouches&montage
-------- montage
-------- retouches


Documents présents le répertoire 'souvenir' :

Résultat_Listing.txt
Script_Listing.bat
etc...


-------------------------
. Dossier Photos 'JPG' (2 fichiers) !ajouter taille dossier!

IMG_TEST photo 1.JPG
IMG_TEST photo 2.JPG

(1) documents mal placés :

IMG_TEST RAW 1.CR2


----------------------
. Dossier fichiers 'RAW' (5 fichiers) !ajouter taille dossier!

IMG_TEST photo raw 1.CR2
IMG_TEST photo raw 2.CR2
IMG_TEST photo raw 3.CR2

(2) documents mal placés :

IMG_TEST photo 1.jpg
IMG_TEST photo 13.jpg


----------------------
. Dossier 'retouches&montage' (0 fichier)

/!\ aucun doc n'est archivé dans ce dossier

sous-dossier 'retouches' :

IMG_TEST photo 1 retouchée.jpg
IMG_TEST photo 13 retouchée.jpg
doc de retouche photo 1.pfi
doc de retouche photo 13.pfi

sous-dossier 'montage' :

doc de montage masque photo 1.tng
doc de montage masque photo 13.tng
filtre montage photo 1.pfi
programmation.psd
plaquettes.docx
info procédures.txt




Désolé pour la mise en page (les alinéas) qui ont foiré sur le résultat désiré. du coup ça sert un peut à rien… :s

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 18 juin 2019 à 22:37
Vu que tu as des portions de code qui se répètent, j'ai créé une fonction nommée :comptage pour simplifier ton script :

@echo off
chcp 1252 >nul
setlocal enableextensions enabledelayedexpansion

rename "*.JPG" "*.jpg"
rem voir si le "rename" fonctionne aussi pour les sous-dossiers... à priori non. Fonctionne que dans le dossier principal "%CD%" ... à modifier! surtout pour dossier %cd%\JPG


rem --------------------------------------------- début script ---------------------------------------------

(echo.
for /f "tokens=*" %%i in ("%CD%") do (set "album=%%~ni" & echo Nom de l'album Photos : '!album!')
rem A afficher la taille du dossier DOSS_PHOTOS, convertir en Mo si possible. Pas réussi.
rem ne comptabiliser que les JPG, CR2 pour le calcul de la taille du dossier
echo.
echo Chemin d'accès : '%CD%'

echo.
echo.
echo ------------

rem ! compter le nombre de fichiers

set nombre=0
for /f "delims=" %%A in ('2^>nul dir /b /a-dslh') do set /a nombre+=1
echo [ !nombre! fichier(s) ]

echo.
echo Documents présents dans dossier '!album!' :
echo.
if !nombre! EQU 0 (echo aucun fichier supplémentaire ) else (dir /b /a-d | findstr /i /v "Script_Listing.bat Résultat_Listing.txt")

echo.
echo.
echo -------------------------

rem ------------------ PARAGRAPHE " Dossier Photos JPG " : ------------------

call :comptage "JPG" ".jpg" ".CR2" "Photos"

echo.
echo.
echo ----------------------

rem ------------------ PARAGRAPHE " Dossier fichiers RAW " : ------------------

call :comptage "RAW" ".CR2" ".jpg" "Fichiers"

echo.
echo.
echo ----------------------

rem ------------------ PARAGRAPHE '' Retouches et Montages '' : ------------------

call :comptage "retouches^&montage" "*" "*" "Retouches ^& Montage"

echo.


) > Résultat_Listing.txt

rem ----------------------------- Voir pour faire création automatique d'un document .bat qui me met tout ce code, à partir du document .bat qui me crée automatiquement les dossiers. voir si nécessaire...
rem rectification : c'est inutile, puisque les album photos n'auront pas les mêmes noms, donc il faudra que je modifie à chaque fois les chemins d'accès... donc autant le fair manuellement à chaque fois :/



:comptage

set nombre=0
for /f "tokens=*" %%i in ("%CD%\%~1") do (
echo Dossier %~4 '%%~ni'
for /f "delims=" %%A in ('2^>nul dir /b /a-dslh') do set /a nombre+=1
)

if !nombre! EQU 0 (echo 0 fichier) else (for /f "tokens=1,* delims= " %%i in ('2^>nul dir "%CD%\%~1" /a-d ^| find " fichier"') do echo %%i documents)

echo.
if not exist "%CD%\%~1\*%~2" (echo aucun %~2 n'est archivé dans ce dossier) else (dir /b /a-d "%CD%\%~1\*%~3")

if "%~4"=="Retouches ^& Montage" (goto :eof)

echo.
echo.
for /f "tokens=1,* delims= " %%i in ('2^>nul dir "%CD%\%~1\*%~3" /a-d ^| find "fichier"') do echo %%i documents mal placés :

if not exist "%CD%\%~1\*%~3" (echo aucun %~3 n'est archivé dans ce dossier) else (dir /b /a-d "%CD%\%~1\*%~2")

goto :eof


J'ai fait ça à la va-vite, je n'ai pas eu le temps de tester quoi que ce soit, si j'ai un peu de temps demain soir je m'y mettrai sérieusement.

Bonne continuation.
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 20 juin 2019 à 23:46
Bonsoir,

Comme promis je repasse par ici pour te faire part de mes dernières trouvailles.

J'ai re-écris entièrement le script afin de le simplifier, trop compliqué de repartir de ta version, désolé.

Je n'ai pas encore pu m'attaquer à tous les problèmes, mais j'en ai déjà résolu quelques-un, tout ça en un minimum de lignes pour avoir quelque chose de lisible et compréhensible.

Avant de m'attaquer au reste, je voudrais que tu valides (ou pas) le travail déjà accompli :

@echo off
Mode con cols=120
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul

set album=souvenir

cd /d %~dp0

cd %album% || exit /b 1


:: -----------------------------------------------------------
:: début du programme
:: -----------------------------------------------------------

cls & echo. & echo Nom de l'album Photos : '%album%'
echo. & echo Chemin d'accès : '%~dp0%album%'

echo. & echo ---------------------------------------------------------------------------------------------------
echo. & echo Dossiers présents dans ce répertoire : & echo.

for /f "delims=" %%A in ('2^>nul dir /b /s /ad') do (
set nom=%%~A
set nom=!nom:%cd%\=!
echo ---- !nom!
)


:: -----------------------------------------------------------
:: on établit le listing de chaque dossier
:: -----------------------------------------------------------

call :listing "JPG" "*.jpg" "Dossier Photos"

call :listing "RAW" "*.CR2" "Dossier fichiers"

call :listing "retouches-montage\montage" "*.tng *.pfi *.psd *.Ai *.png *.doc *.jpg *.CR2 *.docx" "Dossier Retouches-Montage"


:: -----------------------------------------------------------
:: fin du programme
:: -----------------------------------------------------------

echo. & pause
exit /b 0


:: -----------------------------------------------------------
:: on calcule la taille du dossier et le nombre de fichiers
:: -----------------------------------------------------------

:listing

pushd "%~1"

echo. & echo ---------------------------------------------------------------------------------------------------
echo. & echo ^>^>^> %~3 { Listing de '\%~nx1' } & echo.

set nombre=0
set taille=0

for %%A in (%2) do (
set /a nombre+=1
set /a taille+=%%~zA
echo ^>^>^> %%~nxA
)

popd


:: -----------------------------------------------------------
:: on convertit vers l'unité la plus adéquate
:: -----------------------------------------------------------

set "unite="
for %%A in (octets Ko Mo Go To) do (if !taille! LSS 1000 (if not defined unite (set unite=%%A)) else (set /a "fraction=!taille! %% 1024" & set /a "taille=!taille! / 1024"))

if !nombre! EQU 0 (echo /^^!\ aucun doc n'est archivé dans ce dossier) else (echo. & echo ^( !nombre! fichiers ^) ==^>^> !taille!,!fraction! !unite!)

goto :eof

Le dossier retouches&montage fait planter le script car l'esperluette & est un caractère spécial, il va falloir renommer ce dossier autrement.


0
RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019 8
30 juin 2019 à 03:45
Bonsoir.
Tout d'abord je vous remercie pour le temps que vous m'accordez. Merci pour votre réponse.
Et désolé de ne pas avoir pu répondre plus tôt...
je suis en déplacement en ce moment et ne peut donc pas avancer comme je le voudrais :s
je n'ai donc pas pu me remettre sur ce "projet"... même mes post-traitements photos ont été retardés :(
Enfin bref, ce n’est pas le problème.

J'ai re-écris entièrement le script afin de le simplifier, trop compliqué de repartir de ta version, désolé.

Je me doute bien que c’est plus simple de tout reprendre… étant un débutant dans ce genre de codage, je suis parti de rien, avec ce que j'ai pu, comme j’ai pu. Donc je sais pertinemment qu'il y a des erreurs et que ce n’est pas difficile de faire mieux (d'ailleurs ça se voit avec les plantages ^^).

J'ai essayé d'apprendre un peut et de mettre en application, mais c'est comme tout, on ne peut pas arriver à un résultat correcte en seulement quelques jours.
Débutant, mais voulant faire les choses bien... j'ai même récupéré PowerBatch pour essayer de me simplifier la vie, lol. Mais ça n’a pas arrangé grand-chose. Je m’attendais à un logiciel me permettant de pouvoir voir les codes dans une fenêtre, et un aperçu du résultat dans une autre, un peut comme certains logiciels pour coder en html, php, …(comme Dreamweaver que j’utilisais jadis pour faire un site internet…), mais ça aurait été trop facile bien sur …
Bref, ce n’est pas non plus le sujet.

Avant de m'attaquer au reste, je voudrais que tu valides (ou pas) le travail déjà accompli :

heu.. donc...
là en regardant le .bat , j'essai déjà de le décortiquer et de comprendre, car ça ne fonctionne pas, évidemment. Alors je regarde voir si j'ai des réglages à faire dans mes dossiers au cas où je ne sois pas doué. Lol Mais ça serait trop facile si ce n’était que ça…
J’ose alors présumer que c’est normal le fait que ça ne fonctionne pas… encore…
J’espère, sinon ça veut dire que je suis vraiment une brêle. mdr

Donc juste à la « lecture » du code:

en ligne 6,
J’aperçois "album=souvenir"
Pour le coup "souvenir" est juste le nom du dossier principal d'essai, car il y en aura un paquet de dossiers différents bati sur la même forme (mais avec des noms différents de dossier principal).
Pour info, faudra t-il alors que je modifie le code pour chaque dossier? ou c’est juste une partie temporaire ?

erf! la fonction pour la conversion d'octets j'en ai jamais vu de comme ça dans mes recherches... je ne risquais pas y arriver ^^ en même temps je n’ai pas trouvé grand-chose à ce sujet. Mis à part le fait qu’il y en a qui divisent par le bien connu 1024, et d’autres par 1048 (si je ne me trompe pas) pour un résultat plus pointu…
J’ai fait des essais, mais ils ne se sont pas avérés tous très concluant.

Au final, et bien je ne sais quoi répondre.
C'est beau, propre, et… compliqué. lol. mais c'est intéressant.
Du coup, ça dépasse mon niveau (pas compliqué...) et je ne comprends pas tout...
je me trompe peut être, mais je crois comprendre avec surprise, au début, que le résultat sera affiché avec des alinéas (en colonne) ?... cool ça ! j’ai pas réussi à trouver comment faire, ça non plus. J’ai même cru que c’était impossible. Je commençais même à me dire que j’allais essayer de faire ça en html. Le problème c’est qu’il m’aurait surement fallu du php pour les variables et les commandes… car il me semble bien, selon mes souvenirs, que le hml lui-même ne peut pas faire tout ça tout seul, pas pratique dans ce cas là. Et puis c’est loin tout ça, depuis ça à du pas mal changer, lol.
J’aurais pour le coup était aussi mauvais dans ces codages.

Ensuite j'aperçois le dossier souvenir, comme mentionné plus haut.

Après, dans le paragraphe "début du programme" ça à l'air de correspondre au résultat recherché.
idem pour le listing de chaque dossier. (dossier "photos JPG", dossier "fichiers RAW" et "Retouches-montage")

en ligne 46,
je ne comprends pas trop le "exit"

Pour la suite, je ne vois pas trop le résultat. J'imagine, mais j'ai du mal à visionner la chose. Peut être est-ce juste les règles de calcul qui sont affichées là... (du coup je comprendrais mieux le but de ces lignes) et donc en fait, ce qui est affiché réellement sur ma page est juste présenté dans les 2 premiers paragraphes. (juste pour me repérer par rapport à ma mise en page. ;) )

Au final, en lisant le code, si je le comprend comme il faut, ça à l'air d'être ça… en beaucoup mieux :)

Le dossier retouches&montage fait planter le script car l'esperluette & est un caractère spécial, il va falloir renommer ce dossier autrement.

Oui je sais.
J'ai galéré avec ce fichu dossier. Je ne sais pas comment faire... J’ai essayé tout ce que je pouvais avec ce fichu &, mais je ne suis arrivé à rien avec lui. Logique !
J’aurais pourtant voulu un nom lisible (donc pas retoucheetmontage qui ne fait pas bien « jolie »). et donc à part mettre un _ ou un & je ne voit pas.
Mais je sais que ce fichu & n’arrange pas la situation… Dilemme !
Evidemment "Retouches et montage » serait le top, mais j’ai cru comprendre que les espaces risquaient également de faire foirer la commande d'appel du dossier...
Peut être que "Retouches-Montage" est un bon compromis. Ou « Retouches_et_montages » ?

En tout cas votre coup de main est appréciable, merci beaucoup 
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > RomantikA- Messages postés 82 Date d'inscription samedi 13 août 2011 Statut Membre Dernière intervention 28 novembre 2019
Modifié le 3 juil. 2019 à 20:28
En fait je m'aperçois que je n'ai pas bien compris la situation de départ (quel est l'arborescence de départ ? Où se trouvent les photos avant le lancement du script ?)

Cela explique que le script fonctionne chez moi et pas chez toi, mais c'est pas grave, il suffira d'adapter les chemins lors de l'appel à la fonction.

La commande EXIT indique la fin du script (fermeture de l'invite de commandes), tout ce qui suit ce sont des fonctions (=des portions de code qui se répètent) qui sont appelées avec la commande CALL, ça ressemble à une commande GOTO sauf qu'à la fin de la fonction le script reprend son cours normal juste après le CALL.

Concernant le dossier retouches&montage tu peux mettre des espaces ou un tiret, on peut gérer les espaces mais les caractères spéciaux c'est une autre histoire.

Concernant la fonction de conversion d'unités, j'ai voulu innover un peu en faisant quelque chose de court et fonctionnel, par rapport à ce qu'on trouve habituellement.
0