run - ¿Cómo obtener la ruta del script por lotes en Windows?
windows batch file virus (5)
Sé que %0
contiene la ruta completa del script por lotes, por ejemplo, c:/path/to/my/file/abc.bat
Me gustaría que la path
sea igual a c:/path/to/my/file
¿Cómo podría lograr eso?
Esa sería la variable %CD%
.
@echo off
echo %CD%
%CD%
devuelve el directorio actual en el que se encuentra el script por lotes.
Estoy trabajando en una máquina con Windows 7 y he terminado usando las líneas a continuación para obtener la ruta de la carpeta absoluta para mi script de bash.
Llegué a esta solución después de consultar 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
Puede usar el siguiente script para obtener la ruta sin arrastrar "/"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
puede ser una ruta relativa. Para convertirlo en una ruta completa, intente algo como esto:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
será el directorio. Aquí hay algo de documentación sobre todos los modificadores de ruta . Cosas divertidas :-)
Para eliminar la barra invertida final, puede usar la sintaxis de subcadena :n,m
, así:
SET mypath=%~dp0
echo %mypath:~0,-1%
No creo que haya una manera de combinar la sintaxis %0
con la sintaxis :~n,m
, desafortunadamente.