Jak uruchamiać programy w tym samym katalogu co plik wsadowy systemu windows?

Mam w tym samym folderze plik .bat i .exe. Nie mogłem wywołać pliku .exe z .bat, chyba że podam do niego pełną ścieżkę absolutną. Czy istnieje sposób, aby nie określić ścieżki?

Author: Jader Dias, 2010-04-28

3 answers

Spróbuj wywołać .exe z %~dp0, tak: %~dp0MyProgram.exe.

%0 zawiera pełną ścieżkę do pliku .bat.

~dp mówi, aby uzyskać napęd i ścieżkę, w tym trailing \.

 115
Author: Patrick Cuff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-28 15:10:36

Rozwiązałem to zmieniając katalog roboczy używając pushd na początku skryptu i przywracając na końcu skryptu używając popd. W ten sposób można zawsze założyć, że katalog roboczy jest taki sam jak lokalizacja pliku bat.

pushd %~dp0
ProgramInSameFolderAsBat.exe
popd
 15
Author: Bruno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-05 09:39:34

Wydaje się dziwne? Od jakiegoś czasu nie pracowałem na Windowsie, ale

Czy próbowałeś prowadzić z/

./ programexe

Naprawdę nie powinno być różnicy? może nietoperz wykonuje z kontekstu C:\Windows a może twoja partia nagrała jakąś płytę do innego katalogu?

 0
Author: house9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-28 15:07:50