[Résolu] For imbriqué dans un autre for
Posté : 24 janv. 2017 15:34
Bonjour,
Je suis en train de créer un script dont le but est de convertir des images jpeg en document pdf.
Les images proviennent d'une GED (gestion électronique de documents) et sont classés dans une arborescence avec plusieurs niveaux de sous-dossiers.
Plus d'informations ici : http://www.commentcamarche.net/forum/af ... borescence
Voilà le code que j'ai testé et qui fonctionne :
Le code ci-dessus fonctionne bien avec un dossier, mais j'ai des sous-dossiers à parcourir donc j'ai voulu imbriquer tout ça dans une autre boucle for mais j'obtiens le message suivant : "la syntaxe n'est pas correcte"
Je pense à un problème d'expansion de variable retardée, mais j'ai beau avoir essayé de comprendre ce concept, ça reste un mystère pour moi.
Merci d'avance pour votre aide.
Je suis en train de créer un script dont le but est de convertir des images jpeg en document pdf.
Les images proviennent d'une GED (gestion électronique de documents) et sont classés dans une arborescence avec plusieurs niveaux de sous-dossiers.
Plus d'informations ici : http://www.commentcamarche.net/forum/af ... borescence
Voilà le code que j'ai testé et qui fonctionne :
Code : Tout sélectionner
@echo off
:: on teste si nconvert.exe est présent
if not exist %windir%\system32\nconvert.exe goto :eof
:: répertoire source contenant les documents numérisés
set rep_source=D:\RECUP_GED\3000057\Administratif
:: on teste si le répertoire source existe bien
cd %rep_source%
if not %errorlevel%==0 goto :eof
if not exist "%rep_source%\Documents_PDF" mkdir "%rep_source%\Documents_PDF"
:: on définit un répertoire temporaire
set dir_temp=D:\TMP_jpg_to_pdf
:: on regroupe toutes les pages de chaque document
for /f "tokens=1,2,3 delims=_." %%a in ('dir /b /a-d-s-l "*.jpg"') do (
if not exist %dir_temp%\%%a mkdir %dir_temp%\%%a
copy %%a_%%b.%%c %dir_temp%\%%a\ > nul
)
echo.
:: on traite les documents un par un
cd %dir_temp%
for /f "tokens=*" %%a In ('dir /b /ad "*.*"') do (
set fichier=%%a
cd %dir_temp%\%%a
set /a compteur=0
Setlocal enableextensions enabledelayedexpansion
For /r %%i In (*.jpg) Do (set /a compteur+=1)
if !compteur! GTR 1 (nconvert -in jpeg -out pdf -multi -o res_!fichier!.pdf *.jpg) else (nconvert -in jpeg -out pdf -o res_!fichier!.pdf *.jpg)
echo.
move /y "res_!fichier!.pdf" "!rep_source!\Documents_PDF" > nul
)
Endlocal
cd %USERPROFILE%
rmdir /s /q "%dir_temp%"
explorer /select,"%rep_source%\Documents_PDF"
:eof
Le code ci-dessus fonctionne bien avec un dossier, mais j'ai des sous-dossiers à parcourir donc j'ai voulu imbriquer tout ça dans une autre boucle for mais j'obtiens le message suivant : "la syntaxe n'est pas correcte"
Je pense à un problème d'expansion de variable retardée, mais j'ai beau avoir essayé de comprendre ce concept, ça reste un mystère pour moi.
Merci d'avance pour votre aide.