
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%\data
para 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 cd
comando 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 cd
para mostrar de qual pasta você está trabalhando.