Post by Pierre.RocheC'est géant, c'est exactement ce que je cherche depuis quelques temps
!!!! Merci beaucoup
Je ne connaissais pas du tout cette fonctionnalité écrite ainsi.
En existe-t-il d'autres (par hasard) ?
Oui !
Il suffit d'afficher l'aide en ligne de SET et de FOR pour les avoir ...
P.ex. on peut effectuer des subtitutions de chaines :
p.ex.
@echo off
set oldtxt=May the Force be with You
set newtxt=%oldtxt:th=l%
Remplace tous les "th" par des "l"
echo %newtxt% va donner :
May le Force be wil You
-----------------------------
Il existe aussi des fonctions d'extractions de nom et/ou extension et/ou
chemin dasn de varaibels contenant un nom de chmein complet.
Cela s'applique :
- aux variables de boucle FOR
- aux paramètres %1, %2 ..., passés en paramètres
%~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.
Exemple :
"testfic.bat"
--------- couper ici ---------
@echo off
echo Le fichier a analyser est %~1
echo Il est sur le dique %~d1
echo Dans le dossier %~p1
echo Son extension est %~x1
echo Sa taille est de %~z1 octets
--------- couper ici ---------
I:\>testfic "I:\Program
Files\Borland\Delphi7\Projects\SuperExec\SuperExec.exe"
Le fichier a analyser est I:\Program
Files\Borland\Delphi7\Projects\SuperExec\SuperExec.exe
Il est sur le disque I:
Dans le dossier \Program Files\Borland\Delphi7\Projects\SuperExec\
Son extension est .exe
Sa taille est de 1129472 octets
Ces fonctions peuvent être utiles, p.ex., pour récupérer la lettre du disque
dans lequel se trouve le script
En effet, le paramètre %0 contient toujours le nom du script.
set dd=%~d0
echo Ce script est sur le disque %dd%
Pour passer les longues soirées d'hiver :
SET /?
FOR /?
;-)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.net
Jean-***@wanadoo.fr * ***@free.fr