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 :

Paramètres /d forfiles


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut Paramètres /d forfiles
    Bonjour,
    Je fais un batch d'exportation de fichiers plats dans une base de donnée.
    Celui ci s'exécute dans un répertoire comprenant tooooooooooooous les fichiers et je voudrais isoler seulement les fichiers des 3 derniers mois.

    j'ai trouvé l'instruction "forfiles" qui semblait correspondre à mes attentes mais je bloque sur la condition de date
    Partout où je cherche , je tombe sur la même explication alambiquée:

    Sélectionne les fichiers avec une date de dernière modification dans le délai spécifié.
    Sélectionne les fichiers avec une date de dernière modification postérieure ou égale à (+) ou antérieure ou égale (-) à la date spécifiée, dont la Date est au format MM/JJ/AAAA.

    Sélectionne des fichiers avec une date de dernière modification postérieure ou égale à (+) la date du jour plus le nombre de jours spécifié, ou antérieure ou égale à (-) la date actuelle moins le nombre de jours spécifié.

    Les valeurs valides pour les jours incluent n'importe quel nombre dans la plage 0 à 32, 768. Si aucun signe n'est spécifié, + est utilisé par défaut.
    Là ce que je comprend c'est que par exemple je peux sélectionner les fichiers qui sont âgés de plus de 30 jours avec /D -30
    OU sélectionner les fichiers qui "seront fait dans 30 jours et plus" avec /D +30 (Marty vite! à la DeLorean !!)

    Donc je résume, je veux les fichiers âgés de 90 jours et moins, dois je faire un truc genre D/ +-90 pour dire je veux des fichiers "après" aujourd'hui -90 jours?

    ( je pourrais tester mais tous mes fichiers éligible à la commande qui vient après sont d'aujourd'hui! ballooooot)

    Pour info mon code a cette tronche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR %%i IN (01 02 03 04 05 06 07 08 09 10 11 12) DO IF EXIST %%i%annee%.EXT  (FORFILES /D -90 /M *%%i%annee%.EXT /C "cmd /c Export @FNAME ")
    le FOR est important étant donné qu'il y a aussi des fichiers type AA%annee%.EXT que je veux pas exporter

    Merci!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 47
    Par défaut
    Bonjour ,

    Pourquoi pas avec ROBOCOPY ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROBOCOPY <source> <destination> /MAXAGE:90 /MOV /XF:AA%annee%.EXT
    Est ce que cela fait ce que tu veux faire ?

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Citation Envoyé par BeN0o8 Voir le message
    Bonjour ,

    Pourquoi pas avec ROBOCOPY ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROBOCOPY <source> <destination> /MAXAGE:90 /MOV /XF:AA%annee%.EXT
    Est ce que cela fait ce que tu veux faire ?
    Je ne pense pas, d'après ce que j'en lis ROBOCOPY ne sert qu'à copier des fichiers répondants à certains critères d'un endroit vers un autre endroit.

    Moi je cherche à appliquer à mes fichiers "répondant à certains critères" un programme de lecture des données ( ce sont des fichiers plats) qui va les insérer dans une base oracle. Et je galérais avec forfiles pour que mes critères comprennent la notion de "modifié il y a au plus 90 jours"

    J'ai abandonné la fonction et je l'ai joué un peu plus bourrin. Vu que le nom de mes fichiers contient la date des données auxquelles ils correspondent je n'ai plus besoin de regarder la date de modification, juste le nom.

    J'ai récupéré l'année et le mois en cours, ainsi que l'année dernière et les 2 mois d'avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set annee=%date:~8,2%
    set mois=%date:~3,2%
     set /A anneed=%annee% - 1
           set /A moisd=%mois% - 1
           set /A moisdd=%mois% - 2
    
    rem je les passe sous forme 2 chiffres
    
           if /I %anneed% LSS 10 set anneed=0%anneed%
           if /I %moisd% LSS 10 set moisd=0%moisd%
           if /I %moisdd% LSS 10 set moisdd=0%moisdd%
    Puis selon le mois en cours je déduis à quels fichiers je dois appliquer mon export pour toujours appliquer sur les 3 mois derniers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if %mois% EQU 01 (    
           goto CAS1
        )
        if %mois% EQU 02 (
           goto CAS2
        )
        if %mois% EQU 03 (
           goto CAS3
        )
        if %mois% GTR 03 (
           goto CAS4
        ) else goto END
    avec mes cas de la forme
    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
    :CAS1
      FOR %%i IN (11 12) DO IF EXIST XX%%i%anneed%.EXT (Export XX%%i%anneed% )
      FOR %%i IN (01) DO IF EXIST XX%%i%annee%.EXT (Export XX%%i%annee%)
      goto END
    :CAS2
      FOR %%i IN (12) DO IF EXIST XX%%i%anneed%.EXT (Export XX%%i%anneed% )
      FOR %%i IN (01 02) DO IF EXIST XX%%i%annee%.EXT (Export XX%%i%annee% )
      goto END
    :CAS3
      FOR %%i IN (01 02 03 ) DO IF EXIST XX%%i%annee%.EXT (Export XX%%i%annee% )
      goto END
    :CAS4
      FOR %%i IN (%moisdd% %moisd% %mois% ) DO IF EXIST XX%%i%annee%.EXT  (Exportstat XX%%i%annee% )
      goto END
    :END
    Et bon c'st moins élégant que l'aurait été le forfiles s'il avait fonctionné mais ça a le mérite de marcher!
    Merci tout de même!

Discussions similaires

  1. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  2. [xmlrad] Pb de paramètre ?
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 07/01/2003, 14h37
  3. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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