たとえば、ファイル名を指定して、スクリプトでコンピュータを検索して変数へのパス。擬似コールは次のとおりです。完全なパス情報を含むドライブ、:Windowsの.batファイルで、任意のファイルへのパスを見つけて、これを変数に書き込むにはどうすればいいですか?
設定pathToMyFile = SomeSearchFunction(myFileToSearchFor.ext)
おかげ
たとえば、ファイル名を指定して、スクリプトでコンピュータを検索して変数へのパス。擬似コールは次のとおりです。完全なパス情報を含むドライブ、:Windowsの.batファイルで、任意のファイルへのパスを見つけて、これを変数に書き込むにはどうすればいいですか?
設定pathToMyFile = SomeSearchFunction(myFileToSearchFor.ext)
おかげ
dir /b /s "c:\myFileToSearchFor.ext"
は、すべてのC内のファイルののoccuranceが一覧表示されます。
ファイルは複数の場所に存在する可能性があります。
このバッチコマンドは、最後に見つかった場所に変数を設定します:
for /f "delims=" %%F in ('dir /b /s "c:\myFileToSearchFor.ext"') do set "pathToMyFile=%%~dpF"
このバッチスクリプトは、最初に見つかった場所に変数を設定します:
for /f "delims=" %%F in ('dir /b /s "c:\myFileToSearchFor.ext"') do (
set "pathToMyFile=%%~dpF"
goto :foundIt
)
:foundIt
は機能/プログラムはありません私が知っていることはこれを実行する。効率が必要な場合は、すべてのディレクトリからファンシーツリー検索を行うプログラムを作成できます。しかし、私はバッチで解決策を見つけました!バッチファイルの最初の引数として発見されるファイルを渡す
@echo off
for /r "C:\somebasepath" %%i in (*) do (
if "%%~nxi" EQU "%1" (
echo %%i
break
)
)
。しかし、深いディレクトリにある場合、これは非常に遅いです。
(1) 'break'を' goto:eof'またはそれに類するものに変更する(2) 'if'コマンドの'/i'オプションを使うべきです。 –
また、ベースパスをパラメータ化することもできます。あなたは 'for/r"%〜dp1 "%% a in(*)'を使用し、 'if/i %%〜nxa ==%〜nx1'でチェックすることができます –
1つのファイルで簡単に実行できます。複数のファイルが見つかったら何をしたいですか? – RobW