0

フォルダーを読み取る小さなバッチ ファイルを作成しようとしています (パスはファイル内の変数として設定されます)。すべてのサブフォルダーの名前をユーザーの選択肢として表示する必要があり、ユーザーがいずれかを選択すると、後で使用するためにそのフォルダー名を変数に保存する必要があります。アイデアは、私が取り組んでいるブランチがたくさんあり、それらすべてに、このバッチで実行したい小さなjarファイルがあるということです。したがって、バッチはフォルダー内のすべてのブランチのリストを表示し、それを選択すると、そのブランチフォルダーにあるjarファイルが開始されます。

例:

C:\code

含む

C:\code\branch1
C:\code\branch2
C:\code\branch3

次に、バッチで次のメニューをユーザーに表示します。

1. branch1
2. branch2
3. branch3

ユーザーがフォルダー名 (f.ex. branch2) を選択すると、後で使用するために変数に保存されます。

私はたくさんのグーグルを試しましたが、何も役に立ちませんでした。私はサブフォルダの名前を読むことができましたが、ここからどこへ行くべきかわかりません..誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

3

まず遅延拡張が必要です

setlocal enabledelayedexpansion

次に、すべてのサブフォルダーのリストが必要です (サブフォルダーが必要な%dir%ディレクトリに設定されていると仮定します)。

set Index=1
for /d %%D in (%dir%\*) do (
  set "Subfolders[!Index!]=%%D"
  set /a Index+=1
)
set /a UBound=Index-1

次に、選択肢を提示できます (入力検証を少し追加しましたが、十分ではありません)。

for /l %%i in (1,1,%UBound%) do echo %%i. !Subfolders[%%i]!
:choiceloop
set /p Choice=Your choice: 
if "%Choice%"=="" goto chioceloop
if %Choice% LSS 1 goto choiceloop
if %Choice% GTR %UBound% goto choiceloop

次に、ユーザーが選択したサブフォルダーで変数を設定できます。

set Subfolder=!Subfolders[%Choice%]!
于 2012-08-08T10:07:48.597 に答える