Configurando o CMD CD para o diretório em que o lote foi executado

Configurando o CMD CD para o diretório em que o lote foi executado

Estou tentando criar um script em lote que abrirá um programa em um ambiente diferente (para que eu possa criar uma versão portátil dele).

Eu uso isso set APPDATA=%CD%\datapara dizer para fazer isso. O problema que estou enfrentando é que recebo o seguinte erro quando o lote é iniciado:

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

Em vez disso, quero usar o cdcomando para alterá-lo para o diretório em lote. Existe uma maneira fácil de fazer isso?

Responder1

Se estiver em uma unidade de rede, você ainda poderá ter problemas, a menos que mapeie a compra da unidade, por que não fazer o seguinte?

APPDATA=%~dp0
cd /d %APPDATA%

Ao fazer um cls você também pode limpar o erro, mas se o script for executado a partir de um caminho UNC você receberá este erro, você apenas terá que mapeá-lo ou CLS para eliminar o erro.

Responder2

Tente colocar isso no lote:

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

Se iniciado a partir de uma pasta UNC, a primeira linha falhará, mas a segunda funcionará.

Se iniciado a partir de uma pasta mapeada de unidade, a 2ª linha falhará, mas a 1ª funcionará.

De qualquer forma, a pasta atual será onde o arquivo em lote está localizado e você poderá alterar as pastas a partir daí.

Mais tarde, você pode usar cdpara mostrar de qual pasta você está trabalhando.

informação relacionada