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 :

Vérifier si le 1er caractère d'une variable commence par "_" [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Vérifier si le 1er caractère d'une variable commence par "_"
    Bonjour à tous,

    Dans la commande qui suit, je cherche à exclure tous les utilisateurs qui commencent par "_" et qui ne sont pas déjà dans le fichier exclude_users.txt. Pour cela j'utilise "%%I:~0,1%"=="_" mais ça ne fonctionne pas.

    Quelqu'un a une idée ?


    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%I in ('dir /a:d-h /b "%SystemDrive%\Users\*" 2^>nul ^| %SystemRoot%\System32\findstr.exe /i /l /x /v /g:"%~dp0exclude_users.txt"') do if not "%%I:~0,1%"=="_" ( ...

    Merci d'avance.

  2. #2
    Nouveau membre du Club Avatar de Lockan
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    En fait le :~0,1 ne s'utilise pas sur des variables temporaires (comme %%I).
    Il faut donc, dans le do(), attribuer %%I à une variable et utiliser :~0,1 sur cette dernière.

    Ça donnerait :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ... Do (
        Set variable=%%I
        if not "%variable:~0,1%"=="_" (
            ...
        )
    )

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    On s'en rapproche bien que la solution de Lockan ne fonctionnera pas.

    Dans un bloc de commande les variables ne sont pas réévaluées, tu doit utiliser l'expansion des variables en commençant par l'activé avec SETLOCAL ENABLEDELAYEDEXPANSION. L'utilisation se fait en appelant tes variables avec ! au lieu de %

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SETLOCAL ENABLEDELAYEDEXPANSION
    ... Do (
        Set variable=%%I
        if not "!variable:~0,1!"=="_" (
            ...
        )
    )

    Tu pourrait aussi filtrer de la même façon que ton exclude avec findstr
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%I in ('dir /a:d-h /b "%SystemDrive%\Users\*" 2^>nul ^| findstr /i /l /x /v /g:"%~dp0exclude_users.txt" ^| findstr /B /V "_"') do ( ...

  4. #4
    Nouveau membre du Club Avatar de Lockan
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Points : 27
    Points
    27
    Par défaut
    Effectivement j'ai répondu un peux vite cette nuit, merci eric

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2020
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci ça répond exactement à mon attente

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/03/2018, 23h51
  2. [Batch] Vérifier si une variable commence par . . .
    Par djokoss22 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 10/12/2016, 20h40
  3. Réponses: 4
    Dernier message: 25/08/2011, 08h27
  4. Encodage de caractère dans une variable passée par POST
    Par DavidAnd dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 18/02/2011, 10h42
  5. Réponses: 3
    Dernier message: 14/03/2006, 14h43

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