2010-04-28 10 views

risposta

103

Provare a chiamare il .exe con %~dp0, ad esempio: %~dp0MyProgram.exe.

%0 contiene il percorso completo del file chiamato .bat.

~dp dice di ottenere l'unità e il percorso, compreso il trailing \.

+2

+1 voto appena trovato questo link su google search - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file. aspx – house9

+0

Buona spiegazione, grazie! – enderland

+12

La risposta di Patrick Cuff sopra funziona, ma fallisce se parte del percorso della directory ha spazi nel suo nome. Per ovviare a ciò è necessario inserire virgolette doppie attorno alla chiamata .exe. "% ~ dp0MyProgram.exe" –

0

sembra strano? Non ho lavorato su Windows per qualche tempo, ma

Avete provato che conduce con un ./

./program.exe

in realtà dovrebbe essere alcuna differenza? forse il pipone sta eseguendo dal contesto di C: \ Windows o il tuo gruppo ha fatto un cd su un altro dir ad un certo punto?

+0

Intendevi. \ (Ovvero, barra rovesciata). –

+0

Penso che quando eseguo il batch viene eseguito da un'altra directory. –

+1

Forse la mia domanda è "come fare doppio clic su un file batch e farlo eseguire nella stessa directory di quello che è?" –

11

Ho risolto questo problema modificando la directory di lavoro utilizzando pushd all'inizio dello script e il ripristino è alla fine dello script utilizzando popd. In questo modo puoi sempre presumere che la directory di lavoro sia la stessa del file bat.

pushd %~dp0 
ProgramInSameFolderAsBat.exe 
popd 
Problemi correlati