Si desea que el directorio en el que está actualmente en el, se puede conseguir eso de %cd%
. Ese es su directorio de trabajo actual.
Si vas a ser cambiar el directorio de trabajo actual durante la ejecución del script, simplemente guardarlo en el inicio:
set startdir=%cd%
continuación, puede utilizar %startdir%
en el código independientemente de los cambios más adelante encendido (que afecta %cd%
).
Si lo que desea es obtener la última componente de esa ruta (como por su comentario), puede utilizar lo siguiente como una línea de base:
@setlocal enableextensions enabledelayedexpansion
@echo off
set startdir=%cd%
set temp=%startdir%
set folder=
:loop
if not "x%temp:~-1%"=="x\" (
set folder=!temp:~-1!!folder!
set temp=!temp:~0,-1!
goto :loop
)
echo.startdir = %startdir%
echo.folder = %folder%
endlocal && set folder=%folder%
Este salidas:
C:\Documents and Settings\Pax> testprog.cmd
startdir = C:\Documents and Settings\Pax
folder = Pax
Funciona copiando los caracteres del final de la ruta completa, uno a la vez, hasta que encuentra el separador \
. No es ni muy ni eficiente, pero la programación por lotes de Windows rara vez es :-)
EDITAR
En realidad, no es un método sencillo y muy eficiente para conseguir el último nombre del componente.
for %%F in ("%cd%") do set "folder=%~nxF"
No
un problema para esta situación, pero si se trata de una variable que contiene un camino que puede o no puede terminar con \
, entonces se puede garantizar el resultado correcto añadiendo \.
for %%F in ("%pathVar%\.") do set "folder=%~nxF"
@Berming, he agregado un código que le dará el último componente de la ruta. Ver la actualización – paxdiablo
Justo lo que necesitaba, muchas gracias. Sin embargo, noté que cuando 'endlocal' no puedo acceder a la variable' folder' después de eso, entonces saqué esa línea. Pensé que ya que quité esa línea, también debería eliminar '@setlocal enableextensions enabledelayedexpansion' en la parte superior, pero quitar esa línea causaba problemas, así que guardé esa. – Berming
@Berming, mira la actualización. Si deja el 'endlocal', lo afectará más tarde.Todavía puede usar 'setlocal/endlocal' para asegurarse de que la expansión diferida funciona, pero modifique' endlocal' a 'endlocal && set folder =% folder%' para que la variable 'folder' se escape. – paxdiablo