Est-il possible d'obtenir le nom du dossier actuel (pas le chemin du répertoire actuel) en utilisant une commande DOS? Si c'est le cas, comment?
Le plus proche que j'ai eu était celui-ci mais il ne le fait pas:
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
remarque: la tentative ci-dessus était une tentative de tokenize de la chaîne et d'obtenir le dernier jeton défini en tant que variable CURR.
windows
command-line
batch
djangofan
la source
la source
cd | sed "s/.*\\//"
(pour canaliser la sortie de cd (cwd) dans une recherche d’expression régulière et la remplacer, en remplaçant tout ce qui se trouve avant la \ finale sans rien du tout)for /f
ni TomWij%~n*
sont pris en charge dans MS-DOS. (Windows 'cmd.exe
n'est pas DOS, c'est un programme Windows natif.)Réponses:
Plus court chemin que j'ai trouvé:
ou dans un script .bat:
ou en .bat avec Get dans variable.
Explication: http://www.robvanderwoude.com/ntfor.php
nx signifie nom de fichier et extension uniquement
la source
%
avec%%
..
), tel que mon dossier% USERPROFILE%.*
utilisées auparavant ooSi vous souhaitez connaître l'emplacement actuel du fichier de commandes (et si votre version de Windows n'est pas une version très ancienne), saisissez
for /?
une fenêtre "Boîte DOS". Défiler vers le bas. Lis.Vous découvrirez que vous pouvez maintenant lire ( à partir à l' intérieur du fichier de commandes) ces variables:
Cela fonctionne dans de nombreux cas. Supposons que le fichier de commandes s'appelle
mytest.bat
. Vous pouvez l'appeler de différentes manières:..\..\to\mytest.bat
............................... (chemin relatif)d:\path\to\mytest.bat
........................... (chemin complet)\\fileserver\sharename\mytest.bat
... (chemin sur le partage distant)... et vous obtiendrez toujours la bonne valeur dans vos variables.
la source
%~dpnx0
, n'est-ce pas?Personnellement, j’ai aimé la réponse de Toms, jusqu’à ce qu’elle se débatte avec des points dans les noms de dir. Cela m'a donné un indice:
la source
La réponse de Tom est bonne, mais si vous avez un nom de répertoire avec un point (par exemple, wxwidgets-2.9.4), vous n'obtiendrez que le nom complet. Donc, cela produirait wxwidgets-2.9 à la place car le .4 a été traité comme une extension (Oui, même s’il s’agit d’un nom de répertoire!).
Pour obtenir le nom complet de la sortie, vous devez ajouter l'extension à la fin:
et en mode de traitement par lots:
Ou bien sûr, définissez une variable dans le fichier de commandes à la place:
la source
Une autre façon est:
cela fonctionne avec "." et espaces dans le chemin
Qu'est ce que ça fait?
place le nom de fichier entier (driveletter-path-filename-extension) dans
MyPath
Varsupprimer le nom de fichier et l'extension de
MyPath
varCela fonctionne aussi avec les chemins UNC. Si vous avez besoin de la barre oblique inverse à la fin du chemin. Supprimez le
\
aprèsMyPath
dans la deuxième commande set, par exemple.la source
%~dp0
Vous pouvez obtenir le répertoire courant dans une variable. Bon mot:
Vérifier avec
la source
juste simple
ou
Faites attention à la barre oblique inverse de la fin du chemin, il ne doit pas s'agir d'une barre oblique inverse de la fin.
la source
Ma réponse dans ce fil le fait en 3 lignes simples:
la source
Cela fonctionne pour moi à partir d'un fichier de commandes. Il renvoie le nom du répertoire de travail actuel.
la source