2013-02-18 17 views
85

Oto mój własny folder programu na moim sterowniku USB:względna ścieżka skryptu BAT

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

Chciałbym użyć run.bat rozpocząć mój Iris.exe

nie mogę użyć tego: F : /Program/bin/Iris.exe jak skrót, ponieważ czasami nie daje mi nazwy kierowcy F (E, G)

Co muszę napisać do pliku nietoperza, aby działał jak urok? Próbowałem że w pliku BAT:

˝\bin\Iris.exe˝ 

To nie działa :(

Odpowiedz

2

albo bin\Iris.exe (bez ukośnika - bo to oznacza zacząć od samego korzenia)
lub \Program\bin\Iris.exe (pełną ścieżkę)

+0

bin \ Iris.exe to nie działa :(Nie lubię używać root, ponieważ pewnego dnia może przeniesię ten katalog do innej lokalizacji A co jeśli zapytam od OS aktualną absolutną ścieżkę? i użyję tego, aby uruchomić exe w bin? – user2083037

+0

Zakładam, że bieżący dysk będzie napędem USB, a bieżącym folderem będzie '\ Program' - czy tak nie jest? Możesz to pokazać za pomocą prostego' cd' Polecenie w wierszu przed próbą uruchomienia pliku .exe –

+0

Po prostu użycie względnej ścieżki niekoniecznie będzie działać. Ścieżka będzie względna do bieżącego katalogu roboczego, który może być różny od katalogu nadrzędnego 'run.bat'. –

192

użyć w pliku wsadowym:

%~dp0\bin\Iris.exe 

%~dp0 rozwiązuje pełną ścieżkę do folderu, w którym znajduje się skrypt wsadowy.

+4

Właściwie to rozwiązuje problem podobny do 'C: \ myDir \\ bin \ Iris.exe' (zwróć uwagę na podwójny ukośnik odwrotny) .To nadal działa, ale pozostawiając odwrócony ukośnik zanim bin stanie się" czystszy "? > '% ~ dp0bin \ Iris.exe'. – mozzbozz

+8

@mozzbozz Jeśli możesz zagwarantować, że '% ~ dp0' będzie zawsze mieć końcowy ukośnik odwrotny, obie instrukcje będą działały. W przeciwnym razie bezpieczniejszym wariantem jest ten z dodatkowym ukośnikiem odwrotnym. –

+3

OK, o to chodzi. Testowałem to tylko na dwóch różnych maszynach z Windows 7, może być inaczej (XP, Vista lub Windwos 8 -> nie wiem, ale: logika Microsoftu i nie mogłem znaleźć żadnych dokumentów na ten temat;)). Jednak znalazłem, że musiałem umieścić wokół niego cudzysłów ('"% ~ dp0 \ bin \ Iris.exe "'), ponieważ ścieżka miała biały znak :) Po prostu być * naprawdę * pewnym, że działa na każdym komputerze . – mozzbozz

24

można uzyskać wszystkie wymagane właściwości pliku za pomocą poniższego kodu:

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

Powinieneś być w stanie korzystać z aktualnego katalogu

"%% CD" \ bin \ Iris. exe

+1

Nie powiedzie się, gdy bieżący katalog nie jest "Programem", stanie się to po dwukrotnym kliknięciu na 'run.bat' z eksploratora.'% CD%' jest bieżącym katalogiem '% ~ dp0' jest katalogiem samego pliku wsadowego – jeb

+0

Prawda, znalazłem, że% ~ dp0 działa lepiej –

8

i odkryli, że %CD% daje ścieżkę skrypt został powołany od a nie ścieżkę skryptu, jednak %~dp0 da th ścieżka samego skryptu.

Powiązane problemy