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 :

Script de déplacement de fichiers datant de 10 jours


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut Script de déplacement de fichiers datant de 10 jours
    Bonjour,

    voici mon problème : j'ai créer un script batch avec la fonction FORFILES pour pouvoir déplacé plusieurs fichier de plus de 10 jours d'une arborescence vers un dossier spécifique.

    voici mon script :

    Code : 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
    cls
    @echo off
    echo.
    echo.
    echo.
    echo ================ Purge des fichiers superieurs a 10 jours ================
    echo.
    echo.
    echo.
    echo Tache lancee le %date% a %time%
    echo ----------------------------------------
    echo.
    echo.
    echo Liste des repertoires a traiter
    echo ===============================
    
    echo.
    cd C:\TEST_PACIFIC\pa
    
    if not exist C:\TEST_PACIFIC\tmp\PALOG\ mkdir C:\TEST_PACIFIC\tmp\PALOG\
    if not exist C:\TEST_PACIFIC\tmp\OLDFILES mkdir C:\TEST_PACIFIC\tmp\OLDFILES
    
    set PALOG=C:\TEST_PACIFIC\tmp\PALOG\listePA.log
    set pathPA=C:\TEST_PACIFIC\pa
    set IBLOG=C:\TEST_PACIFIC\tmp\PALOG\inbox.log
    set OLDFILES=C:\TEST_PACIFIC\tmp\PALOG\OLDFILES
    
    dir /ad /b /s %pathPA% | find /i "inbox" > %IBLOG%
    
    for /f "usebackq delims==" %%i in (`dir /b %pathPA%`) do echo %%i
    echo.
    
    echo Test de presence des dossiers Inbox
    echo ===================================
    echo.
    for /f %%i in (%PALOG%) do if exist %%i\inbox (
    echo %%i\inbox existe
    ) else (
    echo %%i\inbox n'existe pas
    )
    
    echo.
    echo Emplacements d'origine des fichiers de plus de 10 jours
    echo =======================================================
    echo.
    for /f %%i in (%IBLOG%) do (
    forfiles -p%%i -m* -d-10 -c"cmd /c echo %%i\@file date de plus de 10 jours : sa date est @fdate"" >>C:\TEST_PACIFIC\tmp\PALOG\oldfiles.log
    )
    
    echo.
    echo Deplacements des fichiers de plus de 10 jours vers %OLDFILES%
    echo =============================================================================
    echo.
    for /f %%i in (%IBLOG%) do (
    forfiles -p%%i -m* -d-10 -c"cmd /c move %%i\@FILE %OLDFILES%"
    )
    
    SET /A count=0
    FOR /F "usebackq delims==" %%A IN (`DIR /B %OLDFILES%`) DO SET /A count+=1
    IF %count% GTR 1 (
    ECHO %count% fichers deplaces
    ) ELSE (
    ECHO Aucun fichier deplace - Erreur !!!
    )
    
    
    pause
    Le problème interviens à partir de la partie où je liste les fichiers datant de plus de 10 jours. En effet, je prend l'information depuis un fichier de log généré plus haut dans mon script. Mais je ne comprend pas pourquoi il ne peux pas me listé les fichiers datant de plus de 10 jours !

    Si quelqu'un peux m'aidé c'est super sympa !

  2. #2
    Membre expérimenté Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Par défaut
    Citation Envoyé par sousket
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forfiles -p%%i -m* -d-10 -c"cmd /c echo %%i\@file date de plus de 10 jours : sa date est @fdate""
    Euh juste pour vérification, si la ligne seule ci-dessus est exécutée directement dans un shell elle fonctionne ( parce que la syntaxe je la trouve chelou ) ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Citation Envoyé par plopi Voir le message
    Euh juste pour vérification, si la ligne seule ci-dessus est exécutée directement dans un shell elle fonctionne ( parce que la syntaxe je la trouve chelou ) ?
    merci ! j'ai trouvé mon erreur, voici la bonne syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forfiles /p %%i /m * /d -10 /c "cmd /c echo %%i\@FILE date de plus de 10 jours : sa date est @FDATE"
    Pour mon déplacement de fichier voici le code :

    Code : 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
    echo.
    echo.
    echo Deplacements des fichiers de plus de 10 jours vers %OLDFILES%
    echo =============================================================================
    echo.
    for /f %%i in (%IBLOG%) do (
    forfiles /p %%i /m * /d -10 /c "cmd /c move %%i\@FILE %OLDFILES%"
    )
    
    SET /A count=0
    FOR /F "usebackq delims==" %%A IN (`DIR /B %OLDFILES%`) DO SET /A count+=1
    IF %count% GTR 1 (
    ECHO %count% fichers deplaces
    ) ELSE (
    ECHO Aucun fichier deplace - Erreur !!!
    )
    J'ai une question, car on viens de me rajouter une problèmatique sur ce script, en effet, lors du déplacement, je dois excluse un dossier de la liste (meme si le script déplace le contenu des dossiers qu'il détecte).

    En effet, un dossier nommé "Exclu" pour mon test, et qui contient un sous dossier "inbox" (mon script ne déplace que les fichiers des dossier "inbox" qu'il trouve !) ne doit surtout pas être pris en compte. Quelqu'un à une idée pour réalisé cette exclusion lors de mon déplacement ?

    Merci d'avance !

  4. #4
    Membre expérimenté Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Par défaut
    Citation Envoyé par sousket

    J'ai une question, car on viens de me rajouter une problèmatique sur ce script, en effet, lors du déplacement, je dois excluse un dossier de la liste (meme si le script déplace le contenu des dossiers qu'il détecte).

    En effet, un dossier nommé "Exclu" pour mon test, et qui contient un sous dossier "inbox" (mon script ne déplace que les fichiers des dossier "inbox" qu'il trouve !) ne doit surtout pas être pris en compte. Quelqu'un à une idée pour réalisé cette exclusion lors de mon déplacement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dir /b /a:d | find /v "Exclu"

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Citation Envoyé par plopi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dir /b /a:d | find /v "Exclu"

    merci ! je viens de testé, mais apparament le contenu de mon dossier Exclu est bien déplacé .

    Je dois le placé à un endroit particulier ? Sinon, je l'ai mi ainsi dans mon code :

    Code : 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
    cls
    @echo off
    echo.
    echo.
    echo.
    echo ================ Purge des fichiers superieurs a 10 jours ================
    echo.
    echo.
    echo.
    echo Tache lancee le %date% a %time%
    echo ----------------------------------------
    echo.
    echo.
    echo Liste des repertoires a traiter
    echo ===============================
    
    echo.
    cd C:\TEST_PACIFIC\pa
    
    if not exist C:\TEST_PACIFIC\tmp\PALOG\ mkdir C:\TEST_PACIFIC\tmp\PALOG\
    if not exist C:\TEST_PACIFIC\tmp\OLDFILES mkdir C:\TEST_PACIFIC\tmp\OLDFILES
    
    set pathPA=C:\TEST_PACIFIC\pa
    set IBLOG=C:\TEST_PACIFIC\tmp\PALOG\inbox.log
    set PALOG=C:\TEST_PACIFIC\tmp\PALOG\listePA.log
    set OLDFILES=C:\TEST_PACIFIC\tmp\OLDFILES
    
    
    dir /ad /b /s %pathPA% | find /i "inbox" > %IBLOG%
    dir /b > %PALOG%
    dir /b /a:d | find /v "NP1101S1_Exclu"
    for /f "usebackq delims==" %%i in (`dir /b %pathPA%`) do echo %%i
    echo.
    
    echo Test de presence des dossiers Inbox
    echo ===================================
    echo.
    for /f %%i in (%PALOG%) do if exist %%i\inbox (
    echo %%i\inbox existe
    ) else (
    echo %%i\inbox n'existe pas
    )
    
    echo.
    echo.
    echo Emplacements d'origine des fichiers de plus de 10 jours
    echo =======================================================
    echo.
    for /f %%i in (%IBLOG%) do (
    forfiles /p %%i /m * /d -10 /c "cmd /c echo %%i\@FILE date de plus de 10 jours : sa date est @FDATE" >>C:\TEST_PACIFIC\tmp\PALOG\oldfiles.log
    )
    
    echo.
    echo.
    echo Deplacements des fichiers de plus de 10 jours vers %OLDFILES%
    echo =============================================================================
    echo.
    
    
    for /f %%i in (%IBLOG%) do (
    forfiles /p %%i /m * /d -10 /c "cmd /c move %%i\@FILE %OLDFILES%"
    )
    
    SET /A count=0
    FOR /F "usebackq delims==" %%A IN (`DIR /B %OLDFILES%`) DO SET /A count+=1
    IF %count% GTR 1 (
    ECHO %count% fichers deplaces
    ) ELSE (
    ECHO Aucun fichier deplace - Erreur !!!
    )
    
    pause

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    personne ne peux m'aidé plz ?

  7. #7
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Ce que tu veux faire c'est plutôt simple, mais ton script est trop brouillon. Tu utilises pas moins de 3 fois forfiles, qui au passage est une vraie daube, avant de rendre ton déplacement de fichiers effectif. Au passage, je t'informe qu'il existe Robocopy, bien plus performant.

    Pareil, c'est quoi ce "inbox", y'en a partout.

    Voilà, si tu pouvais essayer de simplifier un peu les choses on y verrait plus clair et ce sera plus facile de t'aider.

  8. #8
    Membre expérimenté Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Par défaut
    ligne 30 et 31 de ton dernier post :

    Citation Envoyé par sousket
    dir /b /a:d | find /v "NP1101S1_Exclu"
    for /f "usebackq delims==" %%i in (`dir /b %pathPA%`) do echo %%i
    Le "find /v" que tu as positionné ne sert à rien il me semble . Si je comprends ce que tu veux faire il faudrait un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "usebackq delims==" %%i in (`dir /b %pathPA% ^| find /v "NP1101S1_Exclu"`) do echo %%i

Discussions similaires

  1. [Batch] Supprimer fichiers datant de X jours
    Par leuke dans le forum Scripts/Batch
    Réponses: 25
    Dernier message: 08/01/2018, 13h16
  2. Script déplacement de fichiers
    Par rblog dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 08/12/2011, 09h34
  3. Script de déplacement fichiers
    Par WolwX dans le forum Linux
    Réponses: 5
    Dernier message: 17/10/2010, 16h37
  4. Script de déplacement de fichier wav qui ne fonctionne pas
    Par maxtofurious dans le forum VBScript
    Réponses: 1
    Dernier message: 24/12/2009, 18h19
  5. SunOS 5.8 script de déplacement de fichier
    Par aaron dans le forum Unix
    Réponses: 1
    Dernier message: 05/04/2008, 20h36

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