2013-02-18 6 views
85

Qui è la mia cartella del programma sul mio driver USB:percorso relativo nella BAT sceneggiatura

Program\ 
    run.bat 
    bin\ 
     config.ini 
     Iris.exe 
     library.dll 
     etc. 

Vorrei utilizzare run.bat per iniziare la mia Iris.exe

non posso usare questo: F : /Program/bin/Iris.exe come una scorciatoia, perché a volte non mi dà il nome del driver F (E, G)

Cosa devo scrivere nel file bat per funzionare come un incantesimo? ho provato nel file BAT:

˝\bin\Iris.exe˝ 

Non funziona :(

risposta

2

sia bin\Iris.exe (senza slash iniziale - perché significa che partono proprio dalla radice)
o \Program\bin\Iris.exe (percorso completo)

+0

bin \ Iris.exe non funziona :(Non mi piace usare root, perché un giorno forse sposterò questa directory in un'altra posizione. E se chiedessi dal sistema operativo il percorso assoluto corrente? e lo userò per avviare exe in bin? – user2083037

+0

Supponevo che l'unità corrente fosse l'unità della chiavetta USB, e la cartella corrente sarebbe '\ Program' - non è così? Puoi dimostrarlo con un semplice' cd' comando nella riga prima di provare a eseguire .exe –

+0

Semplicemente l'utilizzo di un percorso relativo non funzionerà necessariamente.Il percorso sarà relativo alla directory di lavoro corrente, che potrebbe essere diversa dalla directory padre di 'run.bat'. –

192

Utilizzare questo nel file batch:

%~dp0\bin\Iris.exe 

%~dp0 risolve il percorso completo della cartella in cui risiede lo script batch.

+4

In realtà questo risolve qualcosa come 'C: \ myDir \\ bin \ Iris.exe '(nota il doppio backslash). Questo funziona ancora, ma lasciando il backslash prima che bin sembra essere" più pulito "? > '% ~ dp0bin \ Iris.exe'. – mozzbozz

+8

@mozzbozz Se si è certi che '% ~ dp0' avrà sempre una barra retroversa finale entrambe le istruzioni funzioneranno. Altrimenti quello con il backslash aggiuntivo è la variante più sicura. –

+3

Ok, questo è un punto. L'ho provato solo su due macchine Windows 7 diverse, potrebbe essere diverso altrove (XP, Vista oder Windwos 8 -> Non lo so, ma: la logica di Microsoft e non ho trovato alcun documento a riguardo;)). Tuttavia, ho scoperto che dovevo racchiuderci tra virgolette ('"% ~ dp0 \ bin \ Iris.exe "') poiché il percorso aveva uno spazio vuoto :) Solo per essere * veramente * sicuro che funzioni su ogni computer . – mozzbozz

24

è possibile ottenere tutte le proprietà del file richiesti utilizzando il codice qui sotto:

FOR %%? IN (file_to_be_queried) DO (
    ECHO File Name Only  : %%~n? 
    ECHO File Extension  : %%~x? 
    ECHO Name in 8.3 notation : %%~sn? 
    ECHO File Attributes  : %%~a? 
    ECHO Located on Drive  : %%~d? 
    ECHO File Size   : %%~z? 
    ECHO Last-Modified Date : %%~t? 
    ECHO Parent Folder  : %%~dp? 
    ECHO Fully Qualified Path : %%~f? 
    ECHO FQP in 8.3 notation : %%~sf? 
    ECHO Location in the PATH : %%~dp$PATH:? 
) 
4

si dovrebbe essere in grado di utilizzare la directory corrente

"% cd%" \ bin \ Iris. exe

+1

Questo errore si verifica quando la directory corrente non è 'Program', ciò accade quando si fa doppio clic su' run.bat' dall'esploratore.'% CD%' è la directory corrente '% ~ dp0' è la directory del file batch stesso – jeb

+0

Vero, ho trovato che% ~ dp0 funziona meglio –

8

ho trovato che %CD% restituisce il percorso dello script è stato chiamato da e non il percorso dello script, tuttavia, %~dp0 darà ° Il percorso della sceneggiatura stessa.