Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Setlocal ?
Auteur Message
Répondre en citant
Message Setlocal ? 
Bonjour bonjour,

Je suis un batcheur assez expérimenté, mais une question me ronge.

Dans de nombreux batch, je vois cette commande : setlocal=enabledelayexpansion

Et j'aimerais savoir à quoi cela sert !

A bientôt !

PS : J'aimerais aussi utiliser l'extension cURL, mais je ne sais pas m'en servir (j'aimerais pouvoir envoyer/reçevoir des fichiers à un serveur). Quelqu'un pour m'aider ?



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Setlocal ? 
Salut
Quelques pistes de réflexion ici :
Arrow Utilisation de setlocal pour avoir des variables du type !variable%nombre%! http://batch.xoo.it/t5337-C-est-sert-a-quoi-les.htm#p40203 (ça équivaut à $variable[1] de php par exemple)
Arrow Utilisation de setlocal pour avoir le droit de traiter des variables dans FOR, j'ai rédigé un tuto à ce sujet http://batch.xoo.it/t5183-Les-variables-dans-FOR.htm




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Fonctionnement technique de setlocal 
La commande setlocal permet de définir des paramètres sur la lecture de variables.
C'est à dire, ça permet (en pratique) d'activer le traitement de '!' comme début/fin d'argument ou au contraire de le désactiver.
Il y a également la seconde syntaxe (plus complexe) perméttant d'alterner la plage de variable, mais on ne s'en sert jamais (quoique ça pourrait me servir un jour ^^). Plus détaillé ici : http://ss64.com/nt/setlocal.html

(Obselète sur Dos9)
EnableExtentions : Inutile sauf si on utilise DisableExtentions, permet d'activer les extensions de cmd
(Obselète sur Dos9)
DisableExtentions : Désactive les extensions de cmd
L'utilité de ces extensions, je ne sais pas trop en réalité, ça doit être un groupe de chose qui ne sont pas présentes sur la console de MS-DOS (beaucoup).

EnableDelayedExtention : Permet d'activer le traitement de '!'
DisableDelayedExtention : Permet de désactiver ce traitement.

Donc en conclusion :
Code:
setlocal enabledelayedextention
suffit largement (EnableExtentions sert à rien)

'%' vs '!' :

% : Développement avant le traitement brut de la commande
! : Développement à chaque interprétation de la commande.

Ordre : '%' puis '!'


Donc bref, voilà la commande détaillé, ce qu'il y a à retenir :
    Code:
    setlocal enabledelayedexpansion

    Ordre d'interprétation : % puis !
    %: Avant le traitement brut (1ère étape du traitement de la ligne)
    ! : À chaque interprétation


Donc
Code:
echo !test%n%!
Développe %n% en premier puis !test(la valeur de n)! ensuite.

Bref, c'est en gros le fonctionnement technique du développement retardé.
N'hésite pas à faire un tour ici : http://www.dos9.org/doc/fr/html/spec/exp.html plus clair que moi Mort de Rire écrit par un modérateur du forum.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Re: Fonctionnement technique de setlocal 
TSnake41 a écrit:

Il y a également la seconde syntaxe (plus complexe) perméttant d'alterner la plage de variable, mais on ne s'en sert jamais (quoique ça pourrait me servir un jour ^^). Plus détaillé ici : http://ss64.com/nt/setlocal.html

(Obselète sur Dos9)
EnableExtentions : Inutile sauf si on utilise DisableExtentions, permet d'activer les extensions de cmd

L'utilité de ces extensions, je ne sais pas trop en réalité, ça doit être un groupe de chose qui ne sont pas présentes sur la console de MS-DOS (beaucoup).


voici quelques utilités de EnableExtentions avec les variables :
elles sont souvent utiles,ça dépend juste de l'objectif du programme.par exemple,faire un explorateur de fichier nécessitera si le développeur le souhaite de prendre les extensions de commandes .
for /? a écrit:
%~I - étend %I en supprimant les guillemets (")
%~fI - étend %I en nom de chemin d'accès reconnu
%~dI - étend %I en lettre de lecteur uniquement
%~pI - étend %I en chemin d'accès uniquement
%~nI - étend %I en nom de fichier uniquement
%~xI - étend %I en extension de fichier uniquement
%~sI - chemin étendu contenant uniquement des noms courts
%~aI - étend %I en attributs du fichier
%~tI - étend %I en date/heure du fichier
%~zI - étend %I en taille du fichier
%~$PATH:I - parcourt les répertoires de la variable
d'environnement PATH et étend %I en nom du
premier fichier reconnu trouvé. Si le nom de la
variable d'environnement n'est pas défini ou
que le fichier n'est pas trouvé par la recherche,
alors ce modificateur étend en chaîne vide

Vous pouvez combiner les modificateurs pour obtenir des résultats composés :

%~dpI - étend %I en lettre de lecteur et chemin d'accès uniquement
%~nxI - étend %I en nom de fichier et extension uniquement
%~fsI - étend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les répertoires listés dans la variable
d'environnement PATH à la recherche de %I et étend
en lettre de lecteur du premier trouvé.
%~ftzaI - étend %I en DIR comme ligne en sortie

Dans les exemples ci-dessus %I et PATH peuvent être remplacés par d'autres
valeurs valides. La syntaxe %~ se termine par un nom de variable FOR valide.
Le choix de noms de variables en majuscules comme %I facilite la lecture
et empêche toute confusion avec les modificateurs qui ne tiennent pas compte
de la casse.





______________________________________________________


cliquer sur un des liens n'est pas dangereux
Ancien site,Nouveau site
Mon site de scan
Vous êtes le
visiteur
Chaine Youtube:
Visiter le site web du posteur Skype
Répondre en citant
Message Setlocal ? 
Oui, mais il est extrêmement rare d'avoir à faire
Code:
setlocal disableextentions
donc au final, ajouter enableextentions ne sert à rien.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Setlocal ? 
@LoganT : toutes les variables du type %%~xX sont expliquées dans mon tuto' http://batch.xoo.it/t4314-Tuto-Les-substitutions-de-r-f-rences-de-variables…




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Message Setlocal ? 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch