132 votes

Un fichier batch Windows peut-il déterminer son propre nom de fichier ?

Un fichier batch Windows peut-il déterminer son propre nom de fichier ?

Par exemple, si je lance le fichier batch C:\Temp\myScript.bat Est-ce qu'il y a une commande dans myScript.bat qui peut déterminer la chaîne "myScript.bat" ?

1voto

Jonathon Reinhart Points 40535

%0 est ce que vous recherchez. Voir cette question pour plus.

echo %0

0voto

Fred Tusing Points 1

Voici mon code initial :

@echo off
Set z=%%
echo.
echo %z%0.......%0
echo %z%~0......%~0
echo %z%n0......%n0
echo %z%x0......%x0
echo %z%~n0.....%~n0
echo %z%dp0.....%dp0
echo %z%~dp0....%~dp0
echo.

J'ai remarqué que le nom de fichier donné par %~0 et %0 est la façon dont il a été entré dans le shell de commande et non la façon dont le fichier est réellement nommé. Donc si vous voulez que le nom du fichier soit en majuscules, vous devez utiliser %~n0. Cependant, cela ne tiendra pas compte de l'extension du fichier. Mais si vous connaissez le nom du fichier vous pouvez ajouter le le code suivant.

set b=%~0
echo %~n0%b:~8,4%

J'ai appris que ":~8,4%" signifie qu'il faut commencer au 9ème caractère de la variable et afficher ensuite les 4 caractères suivants. L'intervalle est de 0 à la fin de la chaîne de la variable. Ainsi, %Path% serait très long !

fIlEnAmE.bat
012345678901

Cependant, cette solution n'est pas aussi solide que celle de Jool (%~x0) ci-dessus.

Mes preuves :

C:\bin>filename.bat

%0.......filename.bat
%~0......filename.bat
. . .

C:\bin>fIlEnAmE.bat

%0.......fIlEnAmE.bat
%~0......fIlEnAmE.bat
%n0......n0
%x0......x0
%~n0.....FileName
%dp0.....dp0
%~dp0....C:\bin\

%~n0%b:~8,4%...FileName.bat

Press any key to continue . . .

C:\bin>dir
 Volume in drive C has no label.
 Volume Serial Number is CE18-5BD0

 Directory of C:\bin
. . .
05/02/2018  11:22 PM               208 FileName.bat

Voici le code final

@echo off
Set z=%%
set b=%~0
echo.
echo %z%0.......%0
echo %z%~0......%~0
echo %z%n0......%n0
echo %z%x0......%x0
echo %z%~n0.....%~n0
echo %z%dp0.....%dp0
echo %z%~dp0....%~dp0
echo.
echo A complex solution:
echo ===================================
echo %z%~n0%z%b:~8,4%z%...%~n0%b:~8,4%
echo ===================================
echo.
echo The preferred solution:
echo ===================================
echo %z%~n0%z%~x0.......%~n0%~x0
echo ===================================
pause

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X