3

擬似コード:

path = ".";
for(;;)
{
   if(exist(path + "/file.exe")
       break;
   path += "/..";
}

基本的に、file.exeを含むフォルダーから数レベル深いフォルダーから実行されるスクリプトがあり、そのフォルダーのパスを見つける必要があります。

簡単な回避策として、これをbatファイルに追加しました。

set PATH=..;..\..;..\..\..;..\..\..\..;%PATH%

フォルダを繰り返し、ファイルがフォルダに存在するかどうかを確認する適切な方法はありますか?

4

3 に答える 3

3

「usebackq」キーワードを使用し、コマンド文字列を`文字で囲むことにより、DOSコマンドの出力をキャプチャできます。次に、DOS dirコマンドを、必要なファイル名とともにベア出力(/ B)およびサブディレクトリ検索(/ S)スイッチとともに使用して、そのファイル名への完全修飾パス文字列を生成できます。この例では、現在のディレクトリのtest/test2にtestFile.exeがあります。

test.batで:

@FOR /F "usebackq" %%y in (`dir /s /b testFile.exe`) do @echo Filename: %%y

私の出力:

Filename: C:\TEST_REMOVE\test\test2\testFile.exe

それが役に立てば幸い!

_ryan

于 2012-08-22T21:12:57.950 に答える
3

私は次のようなことを試みます

pushd
:loop
if exist file.exe goto :found
set lastdir=%cd%
cd ..
if "%cd%" EQU "%lastdir%" goto :notfound
goto :loop
:notfound
echo file.exe not found!
popd
goto :eof
:found
set file=%cd%\file.exe
popd
于 2012-08-22T22:42:55.697 に答える
0

ここにあなたが見ることができるサイトがありますそれはあなたにどのようにそしてどこから始めるべきかの例を与えるでしょう

ディレクトリ内のすべてのファイルを読み取るためのバッチファイルを作成する方法

また、Google検索を行うことをお勧めします-それは私がこのリンクを取得するためにしたことです

于 2012-08-22T20:27:05.077 に答える