2011-07-22 9 views
31

¿Cómo puedo establecer una variable con la ubicación actual? como si en C: \ test y estableciera la variable, se probará ... y si entro c: \ test \ test2, la variable será test2? ...secuencia de comandos por lotes para establecer una variable con la ubicación de ruta actual

yo estoy pensando en usar una para conseguir el interior de una gran cantidad de carpetas y comprobar si existe algún archivo, si el archivo correcto existe Quiero configurar la carpeta actual a una variable para que pueda copiar la ruta y copie esta carpeta ...

Ok así El problema principal es copiar el resto de los archivos en la misma carpeta que el archivo .inf ... ¡por favor ayuda!

Thnak gracias

Respuesta

52

el directorio actual es en la "sombra" cd variable.
Usted podría intentar

set "var=%cd%" 
+0

¡Gracias, funcionó! Aunque, ¿cómo hago un para obtener carpetas y subcarpetas y cada nivel agrega una variable al% cd% ... por lo que cada carpeta que obtiene en la variable será la ruta actual ... – massaki

10
%~dp0 

Esto se expande en la ruta de la unidad & del archivo por lotes se ejecuta actualmente. Por lo general rodeo mis archivos por lotes con algo como:

@echo off 
pushd %~dp0 

... 

popd 

Editar: Parece que no entendía el OP. Mi ejemplo obtiene la ubicación del script en ejecución actualmente, no el "Directorio actual". +1 a jeb.

+0

% ~ dp0 puede ser la actual ubicación, pero solo si el archivo por lotes está en el directorio actual. Pero su respuesta es útil, ya que a menudo es el requisito – jeb

+0

lo siento, intento escribir echo %% ~ dp0 en cmd y obtengo% ~ dp0 ... – massaki

+1

@massaki: no funciona desde el símbolo del sistema; funciona solo en archivos por lotes. '% dp0' es la unidad y la ruta del argumento 0'th al archivo por lotes, que es la ruta completa del archivo por lotes en sí. – tenfour

2

Creo que hay un poco de confusión aquí. % CD% siempre tiene el directorio actual, por lo que no necesita agregar nada para tenerlo. Sin embargo, al volver a leer su pregunta original, creo que necesita la ÚLTIMA PARTE del directorio actual, es decir, el nombre de la ubicación actual que excluye todas las ubicaciones anteriores. Si es así, puede usar esto:

set i=0 
:nextdir 
set /a i+=1 
for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir 
echo Current location: %lastdir% 
+0

Me doy cuenta de que esto es bastante antiguo, pero solo quería hacerte saber estos errores con: delims = \ "fue inesperado en este momento. –

Cuestiones relacionadas