2013-03-07 14 views
7

Ho una struttura di cartelle che assomiglia a questo:Utilizzando il drag and drop da un'altra directory su un file batch non funziona

project 
    bin 
     my_program.exe 
     misc_stuff.exe 
    DROP_OVER_ME.bat 
    input_file.txt 

Fondamentalmente, voglio essere in grado di trascinare e rilasciare il file di input in cima del file batch DROP_OVER_ME.bat e farlo passare sul percorso del file di input verso l'exe.

Questo è ciò che il mio file batch assomiglia:

@echo off 
start bin/my_program.exe %1 
exit 

Quando ho trascinare e rilasciare input_file.txt sopra il file batch, tutto funziona bene - my_program.exe riceve con successo il percorso del file di input e corre.

Tuttavia, quando input_file.txt si trova al di fuori della cartella del progetto, trascinando rende il file batch vomitare un messaggio pop-up dicendo

di Windows non riesce a trovare 'bin/my_program.exe'. Assicurati di aver digitato correttamente il nome, quindi riprova.

Come posso risolvere il mio file batch in modo da poter trascinare e rilasciare i file da qualsiasi posizione arbitraria all'interno del mio filesystem?

risposta

7

Sembra che lo script batch stia basando la directory di lavoro corrente come directory in cui si sta trascinando da e non la directory che contiene lo script. (È possibile verificare questo con l'aggiunta di un echo %cd% && pause allo script, se lo si desidera.) Provate a modificare lo script come segue per eliminare ogni ambiguità su percorsi di file:

@echo off 
cd /d "%~dp0" 
start "" "bin\my_program.exe" "%~f1" 
exit /b 
+0

ho dovuto togliere le virgolette intorno 'bin \ my_program.exe 'per farlo funzionare (continuava ad aprire il file di testo nel blocco note), ma a parte questo, ha funzionato perfettamente, grazie! – Michael0x2a

+0

Oh, sì, perché il primo parametro previsto da 'start' è il titolo della finestra. Avrei dovuto aggiungere delle virgolette vuote prima della parte 'bin \ my_program.exe'. Lo aggiusterò sopra. Mi dispiace per quello – rojo