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 :

Tester si nom de fichier ne commence pas par une chaîne [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Points : 823
    Points
    823
    Par défaut Tester si nom de fichier ne commence pas par une chaîne
    Bonjour

    Pour rendre service, je suis en train de mettre le nez dans un script bash existant.
    Ce script est lancé à intervalle réguliers, parcoure un dossier, et effectue des traitements sur les fichiers, puis les déplace.

    Seulement, de temps en temps, un fichier est traité deux fois, les traitements prenant plus de temps que l'intervalle entre les lancements.

    Pour remédier à ça, je cherche simplement à ajouter un préfixe aux noms de fichiers, et à ne traiter que ceux qui ne comportent pas ce préfixe. Ca permettra aussi de purger facilement le dossier en cas de bug.

    Voici la partie du code qui nous intéresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SET VARPREFIXE=le-prefixe-
    for /r "C:\chemin\" %%i in (*.*) do (
        ren "%%i" "%VARPREFIXE%%%~nxi"
        REM les traitements ...
    )
    Je voudrais donc ajouter un IF %%i ne commence pas par %VARPREFIXE% DO ...

    Mes recherches google ne donnent pas grand chose, j'imagine que c'est super basique pour quelqu'un qui connais le langage

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    set $string=prefixe-V1cent
    set $test=%$string:~0,7%
    
    if /i "%$test%"=="prefixe" (echo Prefixe existant) else (
                                            echo Prefixe Inexistant)

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Points : 823
    Points
    823
    Par défaut
    Bonjour et merci pour ton aide

    J'ai bien compris que le permettait de récupérer les 7 premier caractères, ça fonctionne. La condition fonctionne aussi si je déclare une chaine comme tu le fait

    Le souci, c'est que je récupère le nom du fichier avec %%~nxi
    J'ai bien essayé de tâtonner, mais je ne comprends pas l'usage des %

    J'ai bien trouvé une doc expliquant comment avoir les différentes infos sur les fichiers, mais elle n'explique pas comment manipuler les noms de fichiers en tant que simple chaîne de caractère

    si je comprends bien %%~nxi n'est pas une variable

    je me suis dit "facile, je vais mettre ça dans une variable, puis utiliser la chaîne de caractère"

    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET MAVARIABLE = %%~nxi
    ne marche pas, ce serait trop beau. A priori c'est normal dans une boucle, le problème est que la variable n'est pas définie avant l'exécution un truc comme ça

    Une piste ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Points : 823
    Points
    823
    Par défaut
    Je continue de tâtonner, j'ai lu cette discution

    J'ai activé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocal enableDelayedExpansion
    Et ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET VARPREFIXE=le-prefixe-
    for /r "C:\chemin\" %%i in (*.*) do (
        set NOMFIC = %%i
        set DEBUTNOMFIC = !NOMFIC:~0,11!
    
        echo !NOMFIC! !DEBUTNOMFIC!
    )
    mes variables sont toujorus vides

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Points : 823
    Points
    823
    Par défaut
    trouvé, c'est les espace après le égal encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FPDF] Erreur : "Le fichier ne commence pas par '%PDF-' "
    Par hAMST dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/08/2009, 16h25
  2. [RegEx] chaine ne commencant pas par une sous-chaîne
    Par Darkolive dans le forum Langage
    Réponses: 2
    Dernier message: 05/05/2008, 09h05
  3. Le fichier ne commence pas par %PDF
    Par Youn59670 dans le forum IE
    Réponses: 2
    Dernier message: 03/04/2008, 10h23
  4. Afficher les pseudos qui ne commencent pas par une lettre.
    Par asoka13 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/07/2007, 17h30
  5. PHP/HTMLDOC erreur "le fichier ne commence pas par '%PD
    Par petitmoosse dans le forum Langage
    Réponses: 3
    Dernier message: 02/03/2006, 18h05

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