web-dev-qa-db-ja.com

Windowsバッチ:ある値で始まる最初のフォルダー名を取得しますか?

引数として使用したいフォルダの名前を渡すバッチファイルがあります。しかし、今度は、ユーザーが引数として渡したいフォルダーの名前の最初の数文字だけを指定できるようにすることで、少しスマートにしたいと思います。

たとえば、現在のフォルダに3つのフォルダがある場合:

  • FolderOne
  • FolderTwo
  • AnotherFolder

引数として「An」と入力するたびに、バッチファイルが現在のフォルダー内のフォルダーをループして、指定された文字列で始まる最初のフォルダーの名前を取得する必要があります。この場合、それは「AnotherFolder」になります。

C#でそれを行う方法は知っていますが、バッチファイルは初めてです。誰かがこれを手伝ってくれませんか?それが初心者の質問であるならば申し訳ありませんが、私は本当にそれを機能させることができないようです。

このスクリプトのコンテキスト:現在、プロジェクト用のフォルダーがあります。このフォルダーには、すべてバージョン管理下にある大量のフォルダーが含まれています(TortoiseSVN)。簡単にするために、svnlog "some folder name"と入力するだけでそのプロジェクトのSVNログを表示できるバッチファイルを作成しました。現在のバッチ:

cd C:/Projects/
SET p=C:/Projects/
SET a=%1
SET pa=%p%%a%
TortoiseProc.exe /command:log /path:%pa%
3
FerdieQO

さて、私はすでにそれを理解しました。以下のバッチファイルを参照してください。

cd C:/Projects/
SET p=C:/Projects/
SET a=%1
for /D %%x in (%a%*) do if not defined f set "f=%%x"
SET pa=%p%%f%
TortoiseProc.exe /command:log /path:%pa%
3
FerdieQO