Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème boucle fichier batch

    24 juillet 2018 à 10:58:27

    Bonjour,

    J'ai un problème sur mon Batch, je récupère des pièces jointes de via un script python que je vient exploiter avec un fichier Batch.
    Les fichiers arrive dans le dossier "Scan" puis sont renommer si il y a un espace dans ce nom de fichier. Ensuite, ils sont imprimer automatiquement et copier sur un dossier de sauvegarde "CopyScan".

    Je souhaite effectuer cette opération sur 2 imprimantes différentes, seulement si j'ai plusieurs fichiers dans le dossier "Scan" de TEST, il traite seulement les fichiers du dossier TEST et non ceux du dossier TEST2.

    Je boucle le renommage/imprimerie de mes fichiers dans le dossier TEST et lorsqu'il n'y a plus rien, j'essaye de passer a la partie TEST2, malheureusement il vient juste traiter la première partie puis il quitte le programme.

    Il y a un problème dans ma vérification du dossier vide :

    for /r "D:\BD\TEST\Scan\" %%i in (*.*) do set VrTest=%%i
    if "%VrTest%"=="" GOTO START2

    Si le dossier est vide, donc que tout les fichiers sont traités, je souhaite passer a la partie 2.


    Voici le code actuel :

    @echo off

    REM ----------------------------------------------------------------------------------------------------------------------
    REM -----------------------------Impression PDF TEST---------------------------------------------------------------
    REM ----------------------------------------------------------------------------------------------------------------------
       
        cd "D:\BD\Script\"
        python test.py

    REM ----------------------------------Initiation des variables---------------------------------------------------------------

        set SUMATRA="C:\Program Files\SumatraPDF\SumatraPDF.exe"
        set IMPRIM="TEST"

    :START

    for /r "D:\BD\TEST\Scan\" %%i in (*.*) do set VrTest=%%i
    if "%VrTest%"=="" GOTO START2

    set "$chemin=D:\BD\TEST\Scan\"
     

    pushd "%$chemin%"

    for /f "delims=|" %%f in ('dir /b D:\BD\TEST\Scan\') do (
    for /f "delims=" %%a in ('dir /b /a-d') do call :cmd "%%a"

    exit /b

    :cmd
    set old=%~1
    set fichier=%old: =%
    ren "%old%" "%fichier%"


    dir /b "D:\BD\TEST\Scan\*.pdf">D:\BD\TEST\Temp\edition_test.txt

        for /f "delims=" %%A in (D:\BD\TEST\Temp\edition_test.txt) do (
             echo Impression du fichier :%%A

    REM ------------------------------Impression du fichier------------------------------------------------------------------------


        %SUMATRA%  -print-to  %IMPRIM% -exit-on-print D:\BD\TEST\Scan\%%A
        copy "D:\BD\TEST\Scan\%%A" "D:\BD\TEST\CopyScan\%%A"

    REM ---------------------------Suppression du fichier dans le repertoire courant-------------------------------------------------

        DEL D:\BD\TEST\Scan\%%A /Q

    )

    if exist "D:\BD\TEST\Temp\edition_test.txt" (
    DEL D:\BD\TEST\Temp\edition_test.txt
    )


    REM --------------------------Supprimer les fichiers de plus de 90 jours-------------------------------------------------

    forfiles /p "D:\BD\TEST\CopyScan" /s /m *.* /c "cmd /c Del @path" /d -90


    GOTO :START


    REM ----------------------------------------------------------------------------------------------------------------------
    REM -----------------------------Impression PDF TEST2---------------------------------------------------------------
    REM ----------------------------------------------------------------------------------------------------------------------
       
        cd "D:\BD\Script\"
        python test2.py

    REM ----------------------------------Initiation des variables---------------------------------------------------------------

        set SUMATRA="C:\Program Files\SumatraPDF\SumatraPDF.exe"
        set IMPRIM2="TEST2"

    :START2

    for /r "D:\BD\TEST2\Scan\" %%i in (*.*) do set VrTest=%%i
    if "%VrTest%"=="" exit

    set "$chemin=D:\BD\TEST2\Scan\"
     

    pushd "%$chemin%"

    for /f "delims=|" %%f in ('dir /b D:\BD\TEST2\Scan\') do (
    for /f "delims=" %%a in ('dir /b /a-d') do call :cmd2 "%%a"

    exit /b

    :cmd2
    set old1=%~1
    set fichier1=%old1: =%
    ren "%old1%" "%fichier1%"


    dir /b "D:\BD\TEST2\Scan\*.pdf">D:\BD\TEST2\Temp\edition_test2.txt

        for /f "delims=" %%A in (D:\BD\TEST2\Temp\edition_test2.txt) do (
             echo Impression du fichier :%%A

    REM ------------------------------Impression du fichier------------------------------------------------------------------------


        %SUMATRA%  -print-to  %IMPRIM2% -exit-on-print D:\BD\TEST2\Scan\%%A
        copy "D:\BD\TEST2\Scan\%%A" "D:\BD\TEST2\CopyScan\%%A"

    REM ---------------------------Suppression du fichier dans le repertoire courant-------------------------------------------------

        DEL D:\BD\TEST2\Scan\%%A /Q

    )

    if exist "D:\BD\TEST2\Temp\edition_test2.txt" (
    DEL D:\BD\TEST2\Temp\edition_test2.txt
    )


    REM --------------------------Supprimer les fichiers de plus de 90 jours-------------------------------------------------

    forfiles /p "D:\BD\TEST2\CopyScan" /s /m *.* /c "cmd /c Del @path" /d -90


    GOTO :START2

    Merci de votre aide.

    -
    Edité par test15 24 juillet 2018 à 12:48:48

    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2018 à 11:56:33

      Bonjour,

      Le label :TEST2 n'existe pas ^^

      PS: Pense à utiliser le bouton '</>' pour insérer du code.

      -
      Edité par Zaibai 24 juillet 2018 à 11:58:59

      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2018 à 12:50:08

        Désoler je me suis trompé en adaptant le code pour le forum, j'utilise bien la bonne balise START2.

        Mon problème est toujours le même.

        Merci de votre aide

        • Partager sur Facebook
        • Partager sur Twitter
          24 juillet 2018 à 20:33:09

          Bonjour,

          Dans ce cas je te conseille de :

          Enlever le @echo off pour déboguer le script.

          Rajouter un ' echo valeur VrTest:"%VrTest%" & pause ' après ' for /r "D:\BD\TEST\Scan\" %%i in (*.*) do set VrTest=%%i ' afin de voir si ta variable est vraiment vide.

          • Partager sur Facebook
          • Partager sur Twitter

          Problème boucle fichier batch

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown