Manipuler des noms de fichiers / chemins en batch

Comment faire pour exécuter des traitements dans un script .bat en fonction du nom du fichier ou de son chemin ? Il existe différentes variables prévues à cet effet, dont l’une était utilisée dans un article précédent.

Prenons comme exemple un script test.bat situé dans C:\Documents and Settings\nicolas\.

echo %~d0

Renvoie la lettre du lecteur (C:).

echo %~nx0

Renvoie le nom du fichier et son extension (test.bat).

echo %~x0

Renvoie l’extension du fichier (.bat).

echo %~f0

Renvoie le chemin complet au format long (C:\Documents and Settings\nicolas\test.bat).

echo %~sf0

Renvoie le chemin complet au format court (C:\DOCUME~1\nicolas\test.bat).

echo %~p0

Renvoie le chemin au format long sans le nom du fichier ni la lettre du lecteur (\Documents and Settings\nicolas\).

echo %~dp0

Renvoie le chemin au format long sans le nom du fichier (C:\Documents and Settings\nicolas\).

echo %~sp0

Renvoie le chemin au format court sans le nom du fichier ni la lettre du lecteur (\DOCUME~1\nicolas\).

Pour mettre en pratique, voici un script reprenant certaines de ces variables afin de tester le bon fonctionnement.

@echo off
echo Le fichier se nomme   : %~nx0
echo Son extension est     : %~x0
echo Il est lance depuis   : %~d0
echo Le chemin complet est : %~f0
echo.
pause
exit

Et voici le résultat :

Le fichier se nomme   : test.bat
Son extension est     : .bat
Il est lance depuis   : C:
Le chemin complet est : C:\Documents and Settings\nicolas\test.bat
 
Appuyez sur une touche pour continuer...


Commentaire (1)

Olivier S.31 juillet 2011 à 4 h 45 min

Merci Beaucoup !!
Voici enfin la solution (simple en plus…) à mes problèmes de gestions de noms de fichier
Des plombes que je la cherchais.
Je partagerai ta solution sur le Forum spécialisé (http://batch.xoo.it) où j’ai posé la question.
Merci

Laisser un commentaire

Votre commentaire