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?
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?
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:
SET mypath=%~dp0
echo %mypath:~0,-1%
Desafortunadamente, no creo que haya una manera de combinar la %0
sintaxis con la :~n,m
sintaxis.
%~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 para cd
ninguno.
Puede usar el siguiente script para obtener la ruta sin seguir "\"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
puede ser un camino relativo. Para convertirlo en una ruta completa, intente algo como esto:
pushd %~dp0
set script_dir=%CD%
popd
%~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 y p
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.
%cd%
le dará la ruta del directorio desde donde se ejecuta el script.
Solo corre:
echo %cd%
%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.
@echo off
echo %CD%
%CD%
devuelve el directorio actual en el que se encuentra el script por lotes.
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 .
#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