Configurar CMD CD en el directorio en el que se ejecutó el lote

Configurar CMD CD en el directorio en el que se ejecutó el lote

Estoy intentando crear un script por lotes que abrirá un programa en un entorno diferente (para poder crear una versión portátil).

Utilizo esto set APPDATA=%CD%\datapara decirle que haga eso. El problema al que me enfrento es que aparece el siguiente error cuando se inicia el lote:

CMD.EXE was started with the above path as the current directory. UNC paths are not supported. Defaulting to Windows directory.

En su lugar, quiero usar el cdcomando para cambiarlo al directorio por lotes. ¿Hay una forma fácil de hacer esto?

Respuesta1

Si está en una unidad de red, es posible que aún tenga problemas a menos que asigne la unidad. ¿Por qué no hacer lo siguiente?

APPDATA=%~dp0
cd /d %APPDATA%

Al hacer un cls también puede borrar el error, pero si el script se ejecuta desde una ruta UNC, recibirá este error, solo tendrá que asignarlo o eliminar el error con CLS.

Respuesta2

Intenta poner esto en el lote:

pushd "%~p0" 2> nul
pushd "\\%~p0" 2> nul

Si se inicia desde una carpeta UNC, la primera línea fallará, pero la segunda funcionará.

Si se inicia desde una carpeta asignada a una unidad, la segunda línea fallará, pero la primera funcionará.

De cualquier manera, la carpeta actual será donde se encuentra el archivo por lotes y podrá cambiar las carpetas desde allí.

Más tarde, puede utilizar cdpara mostrar desde qué carpeta está trabajando.

información relacionada