Comment obtenir une Partie du chemin d'accès au Répertoire dans un fichier de commandes
J'ai un fichier BAT dans un répertoire
D:\dir1\dir2\getpath.bat
quand je lance la chauve-souris avec le code ci-dessous il imprime
D:\dir1\dir2\
je veux uniquement le chemin d'accès D:\dir1\
La structure de répertoire n'est pas fixe , il faudra terminer le chemin du répertoire autre que le répertoire dans lequel le fichier BAT réside.
@echo off
SET SUBDIR=%~dp0
ECHO %SUBDIR%
essayé d'utiliser delims dans une boucle for, mais il na pas aider.
Je ne pense pas que je comprends tout à fait. Qu'est-ce exactement que vous essayez de faire? Ce qui indique votre "compléter le chemin d'accès au répertoire"? Disons que vous déplacez votre script à
je veux de la sortie comme F:\other\bins
F:\other\bins\own
, ce qui devrait être votre sortie? F:\other\bins\
, F:\other\
ou tout autre chose?je veux de la sortie comme F:\other\bins
OriginalL'auteur Shaik Md | 2011-09-23
Vous devez vous connecter pour publier un commentaire.
Si c'est le répertoire parent du répertoire de votre script réside dans vous voulez, alors essayez ceci:
(non testé, s'il vous plaît commentaire si il y a des problèmes)
Noter que ce sera, bien sûr, de ne rien changer si votre lot réside dans votre racine du disque (comme dans
F:\
) 😉 Si vous souhaitez une sortie, si c'est le cas, vous devez tester%CD%
contre%batchdir%
avant l'écho.EDIT: Appliquer le patch, voir le commentaire de @RichardA
Oh, vous avez raison, je vais modifier dans un patch.
%~dp0
n'est pas le répertoire de travail, mais le répertoire du lot réside dans (source), alors vous avez besoin de cd-rom dir en premier (si c'est ce qui est souhaité). Je ne peux pas vraiment dire n'importe quoi à pushd/popd.OriginalL'auteur SvenS
%~dp0=C:\dir1\dir2
réglage%SUBDIR:~0,-1%
va le transformer enC:\dir1\dir
. Si l'OP n'a pas de répertoires avec le même nom dans une seule séquence numérotée, cela ne résout pas son problème.Avez-vous essayez ceci sur votre fin? Eh bien ce que vous avez dit n'est pas l'étape finale. La valeur "C:\dir1\dir" est passé à un autre routine qui fait ÉCHO. Il fonctionnera parfaitement si vous essayez d'exécuter
J'aime cette réponse. Il serait de bonne pratique pour le support avec le code setlocal/endlocal de sorte que SUBDIR n'est pas disponible en dehors du contexte de fichier de commandes.
Merci Richard. Modifié pour inclure la localisation.
J'espère que vous ne pensez pas que j'étais pointilleux. Oh, la endlocal est une ligne trop faible, doit être avant le
goto :eof
.OriginalL'auteur Arun
OriginalL'auteur MattyG
Une seule ligne de code 🙂
Si vous voulez l'arrière barre oblique, puis
Si vous ne voulez pas la fuite barre oblique, puis
OriginalL'auteur dbenham
%~dp0 retourne la totalité de la lettre de lecteur et le chemin d'accès de l'actuel fichier de commandes. Ceci peut être utilisé dans le cadre d'une commande pour obtenir des portions de la trajectoire:
Lorsque vous exécutez à partir
C:\dir1\dir2\dir3\batch.bat
retourne
C:\dir1\dir2\
Cela peut être étendu à continuer plus haut sur le chemin:
retourne
C:\dir1\
Source: Microsoft info sur lot paramètres
OriginalL'auteur M P
Vous avez presque eu droit il. À l'aide de %~dp0 attrape le Lecteur+chemin d'accès Complet à votre .chauve-souris de sorte qu'il sera de retour le dossier que votre fichier bat est situé dans.
Depuis l'active directement le répertoire de votre bat est exécuté, tout ce que vous devez faire est de:
Si la mise en une chauve-souris de script pour vérifier, de les jeter dans un
PAUSE
sur un retour à la ligne pour voir votre sortie.OriginalL'auteur Mechaflash