IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Comment compresser un certains nombre de fichier défnis pour controler le nombre


Sujet :

Scripts/Batch

  1. #41
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Salut jam92400 voilà la modif :

    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
    chcp 1252 >nul
     
    powershell -Command "get-childItem D:\CFT\Tempus\Upload\BPM_UAT\SCAN_FRA\*.eml | rename-item -newname { $_.name -replace '!','' }"
     
     
    Setlocal EnableExtensions EnableDelayedExpansion
     
    cd /d %~dp0 || exit /b 1
     
    set files=*.eml *.msg
     
     
    :: -------------------------------------------------------
    :: Définition des variables
    :: -------------------------------------------------------
     
    set today=%date:~6,4%%date:~3,2%%date:~0,2%
    set racine=D:\CFT\Tempus\Upload\BPM_UAT
     
    set /p LotNum=<%racine%\conf\lot.conf
    set LotNum=!LotNum: =!
     
    set logfile=%racine%\log\ScanFra_%today%_LOT_!LotNum!.log
     
    set horodatage=%today%T%time:~0,2%%time:~3,2%
    set horodatage=!horodatage: =!
     
    set ARCHIVE=%racine%\ARCHIVE
    set REJET=%racine%\REJET
    set SCAN_FRA=%racine%\SCAN_FRA
    set WORK_FRA=%racine%\WORK_FRA
    set TMP=%ARCHIVE%\TMP
     
     
    :: -------------------------------------------------------
    :: Création de l'arborescence
    :: -------------------------------------------------------
     
    if not exist "%ARCHIVE%" (mkdir "%ARCHIVE%")
    if not exist "%TMP%" (mkdir "%TMP%")
    if not exist "%racine%\conf\lot.conf" (exit /b 1)
    if not exist "%racine%\log" (mkdir "%racine%\log")
    if not exist "%REJET%" (mkdir "%REJET%")
    if not exist "%SCAN_FRA%\*.*" (exit /b 1)
    if not exist "%WORK_FRA%" (mkdir "%WORK_FRA%")
     
     
    :: -------------------------------------------------------
    :: Tri des fichiers selon l'extension à cibler
    :: -------------------------------------------------------
     
    cd /d %SCAN_FRA%
     
    set vide=0
    for %%A in (%files%) do (set /a vide+=1)
    if !vide! EQU 0 (exit /b 1) 
     
    (echo. & echo ########## Fichiers déplacés vers WORK_FRA
    echo.
    for %%A in (%files%) do (move "%%~A" "%WORK_FRA%" >nul && echo %%~A)
     
    echo. & echo. & echo. & echo ########## Fichiers déplacés vers REJET
    echo.
    move /y "*.*" "%REJET%" | find /v "fichier"
     
    echo. & echo.) >> !logfile!
     
     
    :: -------------------------------------------------------
    :: Création des lots (30 fichiers maxi par lot)
    :: -------------------------------------------------------
     
    cd %WORK_FRA%
     
    set count=0
    set num=0
     
    if not exist "###" (mkdir "###")
     
    (echo. & echo. & echo ########## Fichiers déplacés vers ARCHIVE) >> !logfile!
     
    FOR %%I IN (%files%) DO (
     
    	set /a count+=1
    	set /a num+=1
    	set index=00000!num!
    	set index=!index:~-5!
     
    	set FinalLotNum=00000000!LotNum!
    	set FinalLotNum=!FinalLotNum:~-8!
     
    	move "%%~I" "###\BNPPLS_FRA_3_!horodatage!_!FinalLotNum!_!index!%%~xI" >nul
    	if !count! EQU 30 (call:archive)
     
    )
    if exist "###\*.*" (call:archive)
    rmdir /s /q "###"
     
     
    :: -------------------------------------------------------
    :: Envoi CFT
    :: -------------------------------------------------------
     
    for %%G in (%TMP%\*.7z) do (
    	echo %%G
    	echo start /B /wait D:\APPS\CFTG\scripts\cftxsend.bat -D AUTOMATU -I WWDDIDEM -F "%%~G" -P "U_%%~nxG"
     
    	start /B /wait D:\APPS\CFTG\scripts\cftxsend.bat -D AUTOMATU -I WWDDIDEM -F "%%~G" -P "U_%%~nxG"
     
    )
     
    rmdir /s /q %TMP%
     
     
    :: -------------------------------------------------------
    :: Fin du programme
    :: -------------------------------------------------------
     
    cd /d %racine%\log
     
    set /a last=!LotNum!-1
     
    for /f "delims=" %%A in ('dir /b "!logfile!"') do (ren "%%~A" "%%~nA-!last!%%~xA")
     
    exit /b 0
     
     
    :: -------------------------------------------------------
    :: Fonction de création d'archive
    :: -------------------------------------------------------
     
    :archive
     
    cls & echo. & echo ############# LOT ACTUEL = !LotNum!
     
    set zipfile=BNPPLS_FRA_3_!horodatage!_!FinalLotNum!
    set zipfile=!zipfile: =!
     
    pushd "###"
     
    set count=0
    set num=0
     
    "C:\Program Files\7-Zip\7z.exe" a "!zipfile!.7z" "*.*"
     
    xcopy "!zipfile!.7z" "%TMP%"
    move "!zipfile!.7z" "%ARCHIVE%" >nul && (((echo. & echo *** !zipfile!.7z ***) >> !logfile!) & (del /f /q "*.*" >nul 2>&1))
     
    popd
     
    set /a LotNum+=1
    echo !LotNum! > %racine%\conf\lot.conf
     
    goto :eof
     
     
    :: -------------------------------------------------------
    :: Fonction useless
    :: -------------------------------------------------------
     
    :useless
     
    timeout /t 10
     
    goto :eof
     
    rem

    Je te souhaite une bonne journée.

  2. #42
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Points : 44
    Points
    44
    Par défaut
    Merci milles fois !!! je teste ca rapidement ! merci encore

  3. #43
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 161
    Points : 44
    Points
    44
    Par défaut
    Salut Barnadé !

    Merci 2 milliards de fois: ça marche nickel !!! vraiment les mots sont dérisoires pour te manifester ma gratitude pour ton expertise et ta réactivité!!!!!

    J'aurais une petite question si tu permets complémentaire en rapport avec le script: il y a eu il y a 2 jours un mauvais comportements: effectivement le script a produit tout d'un coup des zip vide avec le mauvaise nommage alors que ça fonctionnait très bien.
    Apres analyse j'ai pu identifié la raison: le "Move" n' as pas pu se faire pour un problème de permission denied à cause d'un fichier qui n'était pas libéré.
    Apres suppression de ces fichiers: le process et revenu à la normal.

    Pour éviter ce type de problème il faudrait gérer le cas où le "move" ne se fait pas correctement et que le script log ça et sorte et qu'il ne poursuit plus...

    voilà le bout de code extrait de script ci-dessous, tu serais me dire comment "catcher" ce problème de "move" et le logguer puis surtout arrêter le script à ce moment là ?

    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
    ....
     
    for %%A in (%files%) do (set /a vide+=1)
    if !vide! EQU 0 (exit /b 1) 
     
    (echo. & echo ########## Fichiers déplacés vers WORK_FRA
    echo.
    for %%A in (%files%) do (move "%%~A" "%WORK_FRA%" >nul && echo %%~A)
     
    echo. & echo. & echo. & echo ########## Fichiers déplacés vers REJET
    echo.
    move /y "*.*" "%REJET%" | find /v "fichier"
     
    echo. & echo.) >> !logfile!

  4. #44
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Catcher une erreur de déplacement de fichier :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    move "%%~A" "%WORK_FRA%" >nul 2>nul && echo %%~A || echo Erreur de copie

    Maintenant que tu sais catcher l'erreur il faut peut être revoir la structure de ton script pour quitter et loguer
    Bêtement je dirais de fait un goto vers ) >> !logfile! mais j'ai un mauvais pressentiment

Discussions similaires

  1. Shell script pour compter le nombre de fichiers par extension
    Par andress33 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 30/03/2015, 01h26
  2. [Vxi3] comment Compresser la publication dans un fichier ZIP.
    Par zhi_yanyan2004 dans le forum Deski
    Réponses: 3
    Dernier message: 04/12/2012, 09h08
  3. Réponses: 0
    Dernier message: 12/08/2009, 22h09
  4. Réponses: 2
    Dernier message: 15/06/2009, 18h41
  5. Réponses: 7
    Dernier message: 10/10/2007, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo