2017-02-02 11 views
1

へのファイルのディレクトリを割り当て、私は次のコマンドでファイルを検索することができます。ファイルが見つかった場合CMDで変数

DIR /S /B PROGRAM.EXE 

を結果は次のようになります。

C:\ Users \ Dev \ Desktop \ Program.exe

出力にファイル名C:\Users\Dev\Desktop\のないディレクトリだけを入力して、変数へのパスのみを割り当てたいとします。

CMDでこれを行う方法はありますか?バッチファイルで%

For /F "Delims=" %A In ('Dir/B/S/A-D "Program.exe" 2^>Nul') Do @Echo=%~dpA 

ダブルアップ:

+0

作業フォルダは常にデスクトップに配置されていますか? – Hackoo

答えて

1

は、このようなForループを使用します。変数の使用などの任意の一致を設定するためのバッチファイルで

、この構造:

@Echo Off 
Set "i=0" 
For /F "Delims=" %%A In ('Dir/B/S/A-D "Program.exe" 2^>Nul') Do (Set/A "i+=1" 
    Call Set "OnlyPath[%%i%%]=%%~dpA") 
Set OnlyPath[ 
Timeout -1 

各試合はただ複数の一致が行われた場合、あなたが取得することを確実にするために別の変数として設定されますモール。バッチファイルで

+0

助けてくれてありがとう、しかし私はそれを動作させることができませんでした。 このコードをコピーして貼り付け、プログラム名を変更しました。あなたはそれを試しましたか? –

+1

基本的なコーディングであるため、テストする必要はありませんでした。正しく動作します。唯一の方法は、以前に動作していたコマンドラインが実行されていた場所と同じ場所から実行しない場合です。 _あなたは場所を提供するのに十分な責任を負いませんでしたので、私はあなたのように好きなようにテストすると仮定しなければなりませんでした_ – Compo

+0

申し訳ありません、あなたは正しいです!どうもありがとう! –

1

、あなたがそのようにいろいろ書い操作を行うことができます。

@echo off 
set "Working_Folder=%userprofile%\Desktop" 
For /F "Delims=" %%F In ('Dir /B /S /A-D "%Working_Folder%\PROGRAM.exe" 2^>Nul') Do (
    Set "MyFolder=%%~dpF" 
) 
Echo "%MyFolder%" & pause>nul 
+0

うまく動作します、ありがとう! –

関連する問題