Bonjour à tous,

Je crée ce sujet car une connaissance m'a créé un script en batch dont le but est de catégoriser des types de fichier dans une série de dossiers, d'après leur taille (x*y). Il m'a fait une première version dont l'affichage des résultats dans le .txt est parfaite pour l'intégrer directement à mon fichier excel, mais a fait des modifications pour le rendre plus précis dans sa catégorisation (d'après leur taille x*y justement, en utilisant exiftool). Mais il n'a pas remis cet affichage final de la première version qui rendait sous forme de phrases les résultats, et malheureusement il doit être occupé et ne me répond plus. J'ai essayé de modifier le script moi-même mais vraiment je n'y connais pas grand chose donc le programme se lance sans résultat. Je vous mets ici le code où j'ai tenté d'intégrer la mise en page de la première version dans la deuxième version.

J'espère que mon propos est suffisamment clair, je ne souhaitais pas vous noyer sous les détails, mais n'hésitez pas à me signaler toute précision nécessaire. En vous remerciant par avance.
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
@echo off
cd %~p0
del error.txt
dir /a:d /b > list.txt
FOR %%A IN (list.txt) DO set size=%%~zA
IF "%size%"==0"" (
ECHO Aucun dossier trouver.
pause>nul
exit
)
echo Resultat : >a.txt
echo.>>a.txt
set a7=0
set a5=0
set a6=0
set a4=0
set fichea4=fiches
set fichea5=fiches
set fichea6=fiches
set fichea7=fiches
 
echo stop>>list.txt
for /f "tokens=2 delims=:" %%a in ('find /c /v "" list.txt') do set /a Lines=%%a
set /A Lines=%Lines%-1
echo Dossier trouver.
echo Nombre de dossier : %Lines%
echo Nom des dossier : 
set li=0
set li2=0
:retour
 
more +%li% list.txt>list2.txt
set /p string2=< list2.txt
set string3=%string2: =%
set /A li=%li%+1
if "%string3%"=="stop" (
goto all
)
echo %string3%
dir /s /b %string3%\*.jpg >temp.txt
 
FOR %%A IN (temp.txt) DO set size=%%~zA
 
echo stop>>temp.txt
echo Fichier en cours : 
 
:retour2
more +%li2% temp.txt>temp2.txt
set /p string4=< temp2.txt
 
set string5=%string4: =%
set /A li2=%li2%+1
if "%string5%"=="stop" (
set li2=0
echo Dossier : %string3% >> R.txt
if "%a4%"=="0" (goto a4skip)
if "%a4%"=="1" (set fichea4=fiche)
 
set "a=%a4% %fichea4% papier A4"
:a4skip
 
if "%a5%"=="0" (goto a5skip)
if "%a5%"=="1" (set fichea5=fiche)
if "%a6%"=="0" (set "a=%a% et %a5% %fichea5% papier A5" & goto a5skip)
if "%a4%"=="0" (set "a=%a5% %fichea5% papier A5" & goto a5skip)
if NOT "%a5%"=="0" (set "a=%a%, %a5% %fichea5% papier A5")
 
:a5skip
 
if "%a6%"=="0" (goto a6skip)
if "%a6%"=="1" (set fichea6=fiche)
if "%a5%"=="0" (set "a=%a6% %fichea6% papier A6")
if "%a7%"=="0" (set "a=%a% et %a6% %fichea6% papier A6" & goto a6skip)
if NOT "%a6%"=="0" (set "a=%a%, %a6% %fichea6% papier A6")
 
:a6skip
 
if "%a7%"=="0" (goto a7skip)
if "%a7%"=="1" (set fichea7=fiche)
if "%a6%"=="0" (set "a=%a7% %fichea7% papier A7")
if NOT "%a7%"=="0" (set "a=%a% et %a7% %fichea7% papier A7")
:a7skip
 
echo. >>R.txt
set a7=0
set a5=0
set a6=0
set a4=0
goto retour
)
 
) else (
set "filename=%string5%"
For %%A in ("%filename%") do (
    set i=%%~nxA
)
 
 
 
set lef=%string3%\%i%
echo %lef%
echo %string5% | seed "s/ //g" > tiph.txt
set /p string7=<tiph.txt
exiftool -ImageSize %lef% | seed "s/Image Size                      : //g" > temp3.txt
set /p string=<temp3.txt
for /f "tokens=1 delims=x" %%a in ("%string%") do (
set x=%%a
)
set "y=%string:x=" & set "y=%"
 
 
if %x% GEQ 1200 (
 
if %x% LEQ 1600 (
 
if %y% GEQ 900 (
 
if %y% LEQ 1330 (
echo +1 A6
set /a a6="%a6%+1"
goto retour2
)
)
)
)
 
if %x% GEQ 1400 (
 
if %x% LEQ 1700 (
 
if %y% GEQ 2000 (
 
if %y% LEQ 2500 (
echo +1 A5
set /a a5="%a5%+1"
goto retour2
)
)
)
)
 
if %x% GEQ 2400 (
 
if %x% LEQ 2600 (
 
if %y% GEQ 2900 (
 
if %y% LEQ 3200 (
echo +1 A4
set /a a4="%a4%+1"
goto retour2
)
)
)
)
echo Error.
echo Problem with file : "%string5%">> error.txt
goto retour2
pause>nul
:all
timeout /t 2 >NUL
if exist "error.txt" start error.txt
start R.txt
del Final.txt
del list.txt
del list2.txt
del temp.txt
del temp2.txt

Je vous mets également pour comparer la première version du script (bon affichage dans le .txt, mais méthode utilisant le poids des fichiers), puis la seconde version (mauvais affichage, mais bonne méthode en x*y).

VERSION 1
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
@echo off
cd %~p0
dir /a:d /b > list.txt
FOR %%A IN (list.txt) DO set size=%%~zA
IF "%size%"==0"" (
ECHO Aucun dossier trouver.
pause>nul
exit
)
 
echo Resultat : >a.txt
echo. >>a.txt
set a7=0
set a5=0
set a6=0
set a4=0
set fichea4=fiches
set fichea5=fiches
set fichea6=fiches
set fichea7=fiches
echo stop>>list.txt
for /f "tokens=2 delims=:" %%a in ('find /c /v "" list.txt') do set /a Lines=%%a
set /A Lines=%Lines%-1
echo Dossier trouver.
echo Nombre de dossier : %Lines%
echo Nom des dossier : 
set li=0
set li2=0
:retour
 
more +%li% list.txt>list2.txt
set /p string2=< list2.txt
set string3=%string2: =%
set /A li=%li%+1
if "%string3%"=="stop" (
goto all
)
dir /s /b %string3%\*.jpg >temp.txt
echo stop>>temp.txt
:retour2
more +%li2% temp.txt>temp2.txt
set /p string4=< temp2.txt
 
set string5=%string4: =%
set /a li2=%li2%+1
 
if "%string5%"=="stop" (goto oo)
goto else
:oo
set li2=0
echo Dossier : %string3% >> R.txt
if "%a4%"=="0" (goto a4skip)
if "%a4%"=="1" (set fichea4=fiche)
 
set "a=%a4% %fichea4% papier A4"
:a4skip
 
if "%a5%"=="0" (goto a5skip)
if "%a5%"=="1" (set fichea5=fiche)
if "%a6%"=="0" (set "a=%a% et %a5% %fichea5% papier A5" & goto a5skip)
if "%a4%"=="0" (set "a=%a5% %fichea5% papier A5" & goto a5skip)
if NOT "%a5%"=="0" (set "a=%a%, %a5% %fichea5% papier A5")
 
:a5skip
 
if "%a6%"=="0" (goto a6skip)
if "%a6%"=="1" (set fichea6=fiche)
if "%a5%"=="0" (set "a=%a6% %fichea6% papier A6")
if "%a7%"=="0" (set "a=%a% et %a6% %fichea6% papier A6" & goto a6skip)
if NOT "%a6%"=="0" (set "a=%a%, %a6% %fichea6% papier A6")
 
:a6skip
 
if "%a7%"=="0" (goto a7skip)
if "%a7%"=="1" (set fichea7=fiche)
if "%a6%"=="0" (set "a=%a7% %fichea7% papier A7")
if NOT "%a7%"=="0" (set "a=%a% et %a7% %fichea7% papier A7")
:a7skip
 
echo %a%>>R.txt
echo. >>R.txt
 
set a7=0
set a5=0
set a6=0
set a4=0
goto retour
:else
echo %string5%
FOR %%A IN (%string5%) DO set size5=%%~zA
set /a size5="%size5%/1000"
if %size5% LEQ 300 (
set /a a7="%a7%+1"
goto retour2
)
if %size5% LEQ 600 (
set /a a6="%a6%+1"
goto retour2
)
 
if %size5% LEQ 1200 (
set /a a5="%a5%+1"
goto retour2
)
if %size5% GEQ 1200 (
set /a a4="%a4%+1"
goto retour2
)
echo Possible error contact riyad.
pause>Nul
 
 
:all
timeout /t 2 >NUL
echo Fini
start R.txt
del Final.txt
del list.txt
del list2.txt
del temp.txt
del temp2.txt

VERSION 2
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
@echo off
cd %~p0
del error.txt
dir /a:d /b > list.txt
FOR %%A IN (list.txt) DO set size=%%~zA
IF "%size%"==0"" (
ECHO Aucun dossier trouver.
pause>nul
exit
)
echo Resultat : >a.txt
echo.>>a.txt
set a7=0
set a5=0
set a6=0
set a4=0
echo stop>>list.txt
for /f "tokens=2 delims=:" %%a in ('find /c /v "" list.txt') do set /a Lines=%%a
set /A Lines=%Lines%-1
echo Dossier trouver.
echo Nombre de dossier : %Lines%
echo Nom des dossier : 
set li=0
set li2=0
:retour
 
more +%li% list.txt>list2.txt
set /p string2=< list2.txt
set string3=%string2: =%
set /A li=%li%+1
if "%string3%"=="stop" (
goto all
)
echo %string3%
dir /s /b %string3%\*.jpg >temp.txt
 
FOR %%A IN (temp.txt) DO set size=%%~zA
 
echo stop>>temp.txt
echo Fichier en cours : 
 
:retour2
more +%li2% temp.txt>temp2.txt
set /p string4=< temp2.txt
 
set string5=%string4: =%
set /A li2=%li2%+1
if "%string5%"=="stop" (
set li2=0
echo Dossier : %string3% >> a.txt
echo A4 = %a4% >> a.txt
echo A5 = %a5% >> a.txt
echo A6 = %a6% >> a.txt
echo A7 = %a7% >> a.txt
echo. >>a.txt
set a7=0
set a5=0
set a6=0
set a4=0
goto retour
)
 
) else (
set "filename=%string5%"
For %%A in ("%filename%") do (
    set i=%%~nxA
)
 
 
 
set lef=%string3%\%i%
echo %lef%
echo %string5% | seed "s/ //g" > tiph.txt
set /p string7=<tiph.txt
exiftool -ImageSize %lef% | seed "s/Image Size                      : //g" > temp3.txt
set /p string=<temp3.txt
for /f "tokens=1 delims=x" %%a in ("%string%") do (
set x=%%a
)
set "y=%string:x=" & set "y=%"
 
 
if %x% GEQ 1200 (
 
if %x% LEQ 1600 (
 
if %y% GEQ 900 (
 
if %y% LEQ 1330 (
echo +1 A6
set /a a6="%a6%+1"
goto retour2
)
)
)
)
 
if %x% GEQ 1400 (
 
if %x% LEQ 1700 (
 
if %y% GEQ 2000 (
 
if %y% LEQ 2500 (
echo +1 A5
set /a a5="%a5%+1"
goto retour2
)
)
)
)
 
if %x% GEQ 2400 (
 
if %x% LEQ 2600 (
 
if %y% GEQ 2900 (
 
if %y% LEQ 3200 (
echo +1 A4
set /a a4="%a4%+1"
goto retour2
)
)
)
)
echo Error.
echo Problem with file : "%string5%">> error.txt
goto retour2
pause>nul
:all
timeout /t 2 >NUL
if exist "error.txt" start error.txt
start a.txt
del Final.txt
del list.txt
del list2.txt
del temp.txt
del temp2.txt