Hoe programma’s uit te voeren in dezelfde map als het Windows-batchbestand?

Ik heb in dezelfde map een .baten een .exebestand.
Ik kon het bestand .exeniet aanroepen vanuit het bestand .battenzij ik het volledige absolute pad ernaar toe had gezet.
Is er een manier om het pad niet op te geven?


Antwoord 1, autoriteit 100%

Probeer de .exeaan te roepen met %~dp0, zoals dit: %~dp0MyProgram.exe.

%0bevat het volledige pad naar het aangeroepen bestand .bat.

~dpzegt om de drive en het pad op te halen, inclusief de achterliggende \.


Antwoord 2, autoriteit 17%

Ik heb dit opgelost door de werkdirectory te wijzigen met pushdop de start van het script en het herstellen is aan het einde van het script met behulp van popd. Op deze manier kun je er altijd van uitgaan dat de werkdirectory hetzelfde is als de locatie van het bat-bestand.

pushd %~dp0
ProgramInSameFolderAsBat.exe
popd

Other episodes