Haga que el archivo Batch se ejecute en relación con la carpeta real, no el acceso directo

8

He creado algunos archivos por lotes que mueven los archivos en relación con la carpeta en la que se encuentra el archivo por lotes.

Agregué la carpeta a mi Barra de tareas usando Barras de herramientas => Nueva barra de herramientas ... Sin embargo, ahora cuando ejecuto los archivos por lotes, la posición inicial es Mis documentos (U :), no la ubicación real de los archivos por lotes. ¿Hay alguna manera de que pueda usar la ruta real?

ck.
fuente

Respuestas:

10

Coloque lo siguiente en la parte superior de su archivo por lotes:

CD /D %~dp0

Explicación:

  • La /Dopción le dice CDque cambie la unidad actual así como el directorio actual de una unidad.
  • %0 es el nombre del archivo por lotes
  • El ~dice que queremos usar algunos modificadores
  • d se expande para conducir la letra.
  • p se expande a un camino.

También lo %~dp0es el directorio en el que reside el archivo por lotes.

Dave Webb
fuente
El CD funciona perfectamente, pero no cambia la designación de la unidad, por lo que el script todavía intenta ejecutarse en U: \
ck.
He agregado% ~ d0 para cambiar la unidad siguiendo su explicación.
ck.
@ck - Olvidé las unidades, lo siento. Probablemente sea más fácil de usar CD /D. Han editado la respuesta para reflejar esto.
Dave Webb
podemos usar en PUSHDlugar deCD /D
Tuan Anh Hoang-Vu