Sé que %0
contiene la ruta completa de la secuencia de comandos por lotes, por ejemploc:\path\to\my\file\abc.bat
Yo sería path
igual ac:\path\to\my\file
¿Cómo podría lograr eso?
windows
batch-file
Misha Moroshko
fuente
fuente
Respuestas:
%~dp0
será el directorio Aquí hay alguna documentación sobre todos los modificadores de ruta . Cosas divertidas :-)Para eliminar la barra invertida final, puede usar la
:n,m
sintaxis de subcadena, de esta manera:Desafortunadamente, no creo que haya una manera de combinar la
%0
sintaxis con la:~n,m
sintaxis.fuente
%~0\..
, ¡sabía que tenía que haber una mejor manera! Además, es probable que desee para encerrar%~dp0
entre comillas dobles (""
) en caso de que haya espacios en el nombre del directorio, etc.%~dp0
contiene el `` al final. ¿Tienes una idea de cómo eliminarlo?SET msg=hello world
funciona bien). Sin embargo, cuando use% mypath% en otro lugar, debe tener cuidado de usarlo entre comillas, aunque tampoco son necesarios paracd
ninguno.Puede usar el siguiente script para obtener la ruta sin seguir "\"
fuente
%~dp0
puede ser un camino relativo. Para convertirlo en una ruta completa, intente algo como esto:fuente
%~dp0
directamente?%~dp0
puede ser relativo, lo que puede ser o no un problema dependiendo del caso de uso%~dp0
no puede contener una ruta relativa,d
significa unidad yp
ruta, ¿cómo una unidad puede ser relativa?%~dp0
será una ruta absoluta incluso cuando el script se ejecutó como una ruta relativa. Gracias al comentario de jeb, esta respuesta no me engañó. ¿Por qué la gente simplemente inventa cosas y comienza a difundir su imaginación salvaje a los demás? Tengo un colega que hace esto, pero culpé a su edad (joven). Deseo que mi voto negativo cuente.Puede usar
%~dp0
, d significa solo la unidad, p significa solo la ruta, 0 es el argumento para el nombre de archivo completo del archivo por lotes.Por ejemplo, si la ruta del archivo era C: \ Users \ Oliver \ Desktop \ example.bat, entonces el argumento sería igual a C: \ Users \ Oliver \ Desktop \, también puede usar el comando
set cpath=%~dp0 && set cpath=%cpath:~0,-1%
y usar la%cpath%
variable para eliminar la barra diagonal final.fuente
%cd%
le dará la ruta del directorio desde donde se ejecuta el script.Solo corre:
fuente
%CD%
es la carpeta de trabajo actual, no la carpeta, donde se almacena el archivo por lotes. Pueden ser el mismo lugar, pero a menudo no lo son.Esa sería la
%CD%
variable.%CD%
devuelve el directorio actual en el que se encuentra el script por lotes.fuente
CD C:\Temp <CR> ECHO %CD%
(<CR>
es nueva línea ...)Estoy trabajando en una máquina con Windows 7 y terminé usando las líneas a continuación para obtener la ruta absoluta de la carpeta para mi script bash.
Llegué a esta solución después de mirar http://www.linuxjournal.com/content/bash-parameter-expansion .
fuente