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 :

Problème d'écriture dans mon IF ELSE [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut Problème d'écriture dans mon IF ELSE
    Bonsoir,
    Lorsque j'exécute seulement le premier code ci-dessous, je supprime l'utilisateur dont le nom est marqué dans le fichier user.txt, dans mon 2eme code lorsque j'imbrique dans un if else %C% est vide.
    Merci de m'éclairairé

    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 off
    cls
    
    TITLE %0 Script 
    
    set FILE_USER=%CD%\tmp\user.txt
    
    	REM On supprime l'ancien utilisateur
    	set /P C= <%FILE_USER%" 
    	echo %C%
    	net user %C% /del
    
    echo Appuyez sur une touche pour fermer... 
    pause > nul
    
    exit

    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
    @echo off
    cls
    
    TITLE %0 Script 
    
    set FILE_USER=%CD%\tmp\user.txt
    
    REM Creation du nouvel utilisateur
    set /p NEW_USER=Saisissez le nouvel utilisateur:
    
    if not exist %FILE_USER% (	
    	REM On creer le fichier contenant le nom d'utilisateur
    	echo %USERNAME%>%FILE_USER%  
    	REM Creation de l'utilisateur
    	net user %NEW_USER% /add
    	net localgroup Administrateurs %NEW_USER% /add
    ) else (
    	REM On supprime l'ancien utilisateur
    	set /P C= <%FILE_USER%" 
    	echo %C%
    	net user %C% /del
    )
    
    echo Appuyez sur une touche pour fermer... 
    pause > nul
    
    exit

  2. #2
    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
    La faiblesse du batch que veux tu ...

    Lorsqu'il y a un bloc d'instruction (boucle for, (), &) l'interpréteur de script batch n'évalue la variable qu'une seule fois avant le bloc.
    Dans ton cas, lorsqu’il va dans le else il estime que ta variable C est vide.
    Tu modifie bien la valeur de C mais n’empêche qu'il as décidé que durant ce bloc il te dira qu'elle est vide.

    Pour le forcer à vérifier de nouveau la valeur réelle de ta variable, dans un bloc, tu doit utiliser SETLOCAL ENABLEDELAYEDEXPANSION et appeler tes variables avec des !

    Exemple :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    if "toto" == "toto" (
    	set /p aa=
    	echo !aa!
    )
    pause

    Et oui, il faut être un sacré Geek du batch pour faire ce que tu souhaites.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Ah je connaissais pas ce problème. (venant du shell unix)

    Merci

  4. #4
    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
    Hello,

    juste pour completer l'excellente reponse de Eric, tu peux egalement utiliser call


    Code bat : 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
     
    @echo off
    cls
    TITLE %0 Script
    set "FILE_USER=%CD%\tmp\user.txt"
     
     
    REM Creation du nouvel utilisateur
    set /p NEW_USER=Saisissez le nouvel utilisateur:
     
    if not exist %FILE_USER% (call:userNexist) else (call:userExist)
     
    echo fin
    echo Appuyez sur une touche pour fermer...
    pause > nul
    exit
     
    :userExist
    	REM On supprime l'ancien utilisateur
    	set /P C= <%FILE_USER%"
    	echo %C%
    exit/b
     
    :userNexist
    	REM On creer le fichier contenant le nom d'utilisateur
    	echo %USERNAME%>%FILE_USER%
    	REM Creation de l'utilisateur
    exit/b


    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Super!

    Maintenant je sais aussi faire une fonction

    Merci

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

Discussions similaires

  1. [Débutant] Problème d'écriture dans mon fichier texte
    Par Niko_03 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/02/2013, 16h31
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  4. Problème d'écriture dans un tableau
    Par Hokagge dans le forum MFC
    Réponses: 46
    Dernier message: 08/07/2005, 16h47
  5. problème d'écriture dans la BD
    Par billy_ze_kid dans le forum ASP
    Réponses: 6
    Dernier message: 12/06/2005, 20h30

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