Je sais que %0
contient le chemin complet du script batch, par exemplec:\path\to\my\file\abc.bat
Je serais path
égal àc:\path\to\my\file
Comment pourrais-je y parvenir?
Je sais que %0
contient le chemin complet du script batch, par exemplec:\path\to\my\file\abc.bat
Je serais path
égal àc:\path\to\my\file
Comment pourrais-je y parvenir?
Réponses:
%~dp0
sera le répertoire. Voici une documentation sur tous les modificateurs de chemin . Truc amusant :-)
Pour supprimer la barre oblique inverse finale, vous pouvez utiliser la :n,m
syntaxe de sous - chaîne, comme ceci:
SET mypath=%~dp0
echo %mypath:~0,-1%
Je ne pense pas qu'il existe un moyen de combiner la %0
syntaxe avec la :~n,m
syntaxe, malheureusement.
%~0\..
- je savais qu'il devait y avoir une meilleure façon! De plus, vous voudrez probablement mettre %~dp0
des guillemets doubles ( ""
) au cas où il y aurait des espaces dans le nom du répertoire, etc.
%~dp0
contient le `` à la fin. Avez-vous une idée comment l'enlever?
SET msg=hello world
fonctionne bien). Cependant, lorsque vous utilisez% mypath% ailleurs, vous devez être prudent de l'utiliser entre guillemets, bien qu'ils ne soient pas nécessaires non cd
plus.
Vous pouvez utiliser le script suivant pour obtenir le chemin sans ""
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
peut être un chemin relatif. Pour le convertir en chemin complet, essayez quelque chose comme ceci:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
directement?
%~dp0
peut être relatif, ce qui peut ou non être un problème selon le cas d'utilisation
%~dp0
ne peut pas contenir un chemin relatif, d
signifie lecteur et p
chemin, comment un lecteur pourrait être relatif?
%~dp0
sera un chemin absolu même lorsque le script a été exécuté comme chemin relatif. Grâce au commentaire de jeb, je n'ai pas été dupe de cette réponse. Pourquoi les gens inventent-ils des trucs et vont-ils commencer à diffuser leur imagination débordante aux autres? J'ai ce collègue qui fait ça, mais j'ai blâmé son (jeune) âge. Je souhaite que mon vote négatif compte.
Vous pouvez utiliser %~dp0
, d signifie le lecteur uniquement, p signifie le chemin uniquement, 0 est l'argument pour le nom de fichier complet du fichier de commandes.
Par exemple, si le chemin du fichier était C: \ Users \ Oliver \ Desktop \ example.bat, l'argument serait égal à C: \ Users \ Oliver \ Desktop \, vous pouvez également utiliser la commande set cpath=%~dp0 && set cpath=%cpath:~0,-1%
et utiliser la %cpath%
variable pour supprimer la barre oblique de fin.
%cd%
vous donnera le chemin du répertoire à partir duquel le script est exécuté.
Exécutez simplement:
echo %cd%
%CD%
est le dossier de travail actuel, pas le dossier, où le fichier de commandes est stocké. Ils peuvent être au même endroit, mais souvent ils ne le sont pas.
Ce serait la %CD%
variable.
@echo off
echo %CD%
%CD%
renvoie le répertoire courant dans lequel se trouve le script de commandes.
CD C:\Temp <CR> ECHO %CD%
( <CR>
est une nouvelle ligne ...)
Je travaille sur une machine Windows 7 et j'ai fini par utiliser les lignes ci-dessous pour obtenir le chemin absolu du dossier pour mon script bash.
Je suis arrivé à cette solution après avoir consulté http://www.linuxjournal.com/content/bash-parameter-expansion .
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder