1

次の形式の名前のリストを含むテキスト ファイルを生成するバッチ ファイルに取り組んでいます。

Name1
Name2
Name3
etc...

私がやりたいことは、テキスト ファイルからエントリを取得してオプションを作成するメニューを作成することです。

そう

Menu
1 Name1
2 Name2
etc...

メニュー自体を作成しても問題ありませんが、ファイルからデータを取得して変数に割り当てているため、困惑しています。FOR コマンドを見てきましたが、私の脳はそれを取り囲んでいないと思います。上記を実行するコードを持っている人はいますか?

どんな援助でも大歓迎です。

4

2 に答える 2

1
@echo off
setlocal EnableDelayedExpansion
echo Menu
set i=0
for /F "delims=" %%a in (theTextFile.txt) do (
   set /A i+=1
   set "name[!i!]=%%a"
   echo !i! %%a
)
set lastOpt=%i%
:getOption
set /P "opt=Enter desired option: "
if %opt% gtr %lastOpt% (
   echo Invalid option
   goto getOption
)
echo Process !name[%opt%]!

より詳細な説明については、この回答を確認してください

于 2012-05-26T18:48:42.053 に答える
0

ループ内で 1 行ずつテキスト ファイルを生成する場合は、次のカウンターをループに追加できます。

…
SET /A cnt+=1
…

次に、番号付きリストの形式で行を出力する別のループで使用します。

…
<YourFile.txt (
  FOR /L %%L IN (1,1,%cnt%) DO (
    SET /P line=
    SETLOCAL EnableDelayedExpansion
    ECHO %%L !line!
    ENDLOCAL
  )
)

ただし、テキスト ファイルが 1 つのコマンド (または複数のコマンド) の出力として生成される場合は、後で次のように行を数えることができます。

…
FOR /F %%C IN ('FIND /C /V "" ^<YourFile.txt') DO SET cnt=%%C
…

次にFOR /L、上記と同じループを使用してメニューを表示できます。

于 2012-05-27T00:26:55.980 に答える