Quando você inicia um programa com cmd
, seu diretório atual é definido como o caminho que você vê no prompt de comando. Estou quase certo de que o programa em questão tem alguma dependência em outro arquivo em seu diretório de residências, que neste caso não é não seu diretório atual, por isso não pode encontrar o arquivo. Se o programa não existisse, você veria algo assim:
'sub\blargh.exe' is not recognized as an internal or external command,
operable program or batch file.
Você pode provar que o diretório atual é diferente, criando um arquivo de lote denominado loc.bat
em uma pasta chamada test
, contendo echo %CD%
. Quando você executá-lo com test\loc
do diretório pai, você verá o diretório do prompt de comando, não aquele que contém o script.
É certamente possível iniciar programas em outras pastas, mas é necessário ter cuidado com o diretório atual deles. Para iniciar um programa em um determinado diretório, você pode usar start /b /wait /d folder program
. Se eu precisasse fazer isso com frequência, eu poderia fazer um arquivo de lote contendo start /b /wait /d %1 %2
e colocá-lo no meu PATH
.