2013-02-18 25 views
85

ここでは私のUSBドライバの私自身のプログラムフォルダです:相対パス

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

私はこれを使用することはできません私のIris.exe

起動する場合run.batを使用したい:Fを:/Program/bin/Iris.exeのショートカットのように、ときどき私にFドライバ名(E、G)を与えないので、

魅力的に動作するには何を書き込む必要がありますか? 私はBATファイルであることを試みた:

˝\bin\Iris.exe˝ 

それが機能していない:(

答えて

2

いずれか bin\Iris.exe (無スラッシュません - それは、ルートから右のスタートを意味するので)
または\Program\bin\Iris.exe(フルパスを)

+0

bin \ Iris.exeそれは動作しません:(私はいつか他の場所にこのディレクトリを移動するため、多分私は、ルートを使用するのが好きではありません そして、私は現在の絶対パスは、 – user2083037

+0

私は現在のドライブがUSBスティックのドライブであり、現在のフォルダが '\ Program'であると仮定しましたが、それはそうではありませんか?単純な' cd'あなたが.exeを実行しようとする前の行のコマンド –

+0

単に相対パスを使うだけでは必ずしも機能しません。パスは現在の作業ディレクトリからの相対パスで、 'run.bat'の親ディレクトリとは異なる場合があります。 –

192

あなたのバッチファイルでこれを使用します。

%~dp0\bin\Iris.exe 

%~dp0は、バッチスクリプトが存在するフォルダの完全なパスに解決されます。あなたは以下のコードを使用して、すべての必要なファイルのプロパティを取得することができます

+4

これは実際には 'C:\ myDir \\ bin \ Iris.exe'のように解決されます(二重バックスラッシュに注意してください)これはまだ動作しますが、ビンが"クリーナー " > '%〜dp0bin \ Iris.exe'。 – mozzbozz

+8

@mozzbozz '%〜dp0'が常に末尾にバックスラッシュを持つことを保証できれば、両方のステートメントが機能します。それ以外の場合は、バックスラッシュが追加された方が安全です。 –

+3

これは重要な点です。私は2つの異なるWindows 7マシンでこれをテストしましたが、別の場所(XP、VistaまたはWindwos 8 - >私は知らないですが:Microsoftロジックと私はそれについてのドキュメントを見つけることができませんでした;しかし、パスの中に空白があるので、引用符( '"%〜dp0 \ bin \ Iris.exe "')を入れなければならないことがわかりました:)ただ実際にはすべてのコンピュータで動作することを確かめてください。 – mozzbozz

24

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

あなたは

カレントディレクトリを使用することができるはずの "%CDの%" \アイリス\ binに。 exeファイル

+1

これは、現在のディレクトリが 'Program'でなければ失敗します。これはエクスプローラから' run.bat'をダブルクリックすると起こります。'%CD%'は現在のディレクトリです '%〜dp0'はバッチファイル自体のディレクトリです – jeb

+0

真実、私は%〜dp0がうまく動作することを発見しました –

8

私は%CD%スクリプトが呼び出されたパスとスクリプトのないパスを与えることを発見した、しかし、%~dp0は目を与えますスクリプト自身のパス。