Когда вы запускаете программу с помощью cmd
, в ее текущем каталоге указывается путь, который вы видите в командной строке. Я почти уверен, что рассматриваемая программа имеет некоторую зависимость от другого файла в его резидентном каталоге, который в данном случае не является его текущим каталогом, поэтому он не может найти файл. Если бы программа не существовала, вы бы увидели что-то вроде этого:
'sub\blargh.exe' is not recognized as an internal or external command,
operable program or batch file.
Вы можете доказать, что текущий каталог отличается, создав пакетный файл с именем loc.bat
в папке с именем test
, содержащей echo %CD%
. Когда вы запустите его с test\loc
из родительского каталога, вы увидите каталог командной строки, а не тот, который содержит скрипт.
Конечно, можно запускать программы в других папках, но вы должны быть осторожны с их текущей папкой. Чтобы запустить программу в определенном каталоге, вы можете использовать start /b /wait /d folder program
. Если мне понадобится делать это часто, я могу создать пакетный файл, содержащий start /b /wait /d %1 %2
и поместить его в мой PATH
.