Obter caminho relativo ao arquivo em lote - não no diretório de trabalho

1

Eu tenho um arquivo em lotes em E: \ dir0 \ dir1 que chama exe0.exe nessa pasta. Eu preciso que o primeiro argumento para o exe seja E: \ dir0 \ dir2 \ dir3 \ script.js.

O problema é que o nome de dir0 (e qualquer diretório pai que tenha) assim como a letra da unidade podem mudar. Eu cheguei até onde:

exe0.exe %~d0\dir0\dir2\dir3\script.js %*

Agora eu só preciso fazer disso um caminho relativo de alguma forma (com \ ..?)

    
por J.Doe 04.05.2016 / 17:35

1 resposta

0

Para ser claro, parece que você está descrevendo uma estrutura de pastas que se parece com isso:

{unknown}\dir0\dir1\batfile.bat
{unknown}\dir0\dir1\exe0.exe
{unknown}\dir0\dir2\dir3\script.js

Uma maneira muito simples de fazer isso é evitar o uso de letras de unidade e, em vez disso, usar caminho relativo, como este:

exe0.exe ..\dir2\dir3\script.js

No entanto, se o seu exe está esperando para obter uma unidade completa e caminho como parâmetro, então você vai precisar de um pouco mais. Algo assim vai funcionar:

pushd ..\dir2\dir3\script.js
set "ScriptDir=%cd%"
popd
exe0.exe "%ScriptDir%"
    
por 04.05.2016 / 18:45