Sé que %0contiene la ruta completa de la secuencia de comandos por lotes, por ejemploc:\path\to\my\file\abc.bat
Yo sería pathigual ac:\path\to\my\file
¿Cómo podría lograr eso?
windows
batch-file
Misha Moroshko
fuente
fuente

Respuestas:
%~dp0será 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,msintaxis de subcadena, de esta manera:Desafortunadamente, no creo que haya una manera de combinar la
%0sintaxis con la:~n,msintaxis.fuente
%~0\.., ¡sabía que tenía que haber una mejor manera! Además, es probable que desee para encerrar%~dp0entre comillas dobles ("") en caso de que haya espacios en el nombre del directorio, etc.%~dp0contiene el `` al final. ¿Tienes una idea de cómo eliminarlo?SET msg=hello worldfunciona bien). Sin embargo, cuando use% mypath% en otro lugar, debe tener cuidado de usarlo entre comillas, aunque tampoco son necesarios paracdninguno.Puede usar el siguiente script para obtener la ruta sin seguir "\"
fuente
%~dp0puede ser un camino relativo. Para convertirlo en una ruta completa, intente algo como esto:fuente
%~dp0directamente?%~dp0puede ser relativo, lo que puede ser o no un problema dependiendo del caso de uso%~dp0no puede contener una ruta relativa,dsignifica unidad ypruta, ¿cómo una unidad puede ser relativa?%~dp0será 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