選択肢の番号付きリストからアプリケーションを起動します


1

フォルダー内のすべてのアプリケーションを番号付きリストで動的に表示し、アプリケーションに関連付けられた番号を入力してそれらを起動します。

これまでのところ、簡単な部分である番号付きディスプレイが機能していますが、番号入力を特定のアプリケーションを起動する方法に関連付ける方法として困惑しています。

@echo off

echo NirSoft Tools
echo.

setlocal enabledelayedexpansion

set num=0

for %%e in (*.exe) do (
    set /a num += 1
    echo !num! %%~ne
)

echo.
set /p choice="Enter Choice: "

endlocal

echo.
pause

出力は次のようになります。

NirSoft Tools

1 BulkFileChanger
2 FileTypesMan
3 IconsExtract
4 nircmd
5 nircmdc
6 ShellBagsView
7 ShellExView
8 ShellMenuNew
9 ShellMenuView

Enter Choice:

重要な部分、選択したアプリをその番号で起動する方法がありません。Windowsコマンドラインでも可能ですか?

回答:


2

最小限の追加(3行)で思いついたものを以下に示します(ディレクトリの内容/オプションの数が変更された場合)。

@echo off

echo NirSoft Tools
echo.

setlocal enabledelayedexpansion

set num=0

for %%e in (*.exe) do (
    set /a num += 1
    set opt!num!=%%~ne
    echo !num! %%~ne
)

echo.
set /p choice="Enter Choice: "

set newchoice=opt%choice%
start !%newchoice%!

endlocal

echo.
pause

これらの追加でここで何が起こっていますか?

set opt!num!=%%~neラインは、各オプション(のための新しい変数を作成しopt1opt2など)およびそれらのそれぞれは、それに関連付けられているファイル名が含まれています。

このset newchoice=opt%choice%行は、変数を参照する「newchoice」という名前の新しい変数を作成しopt#ます。ここで、#は、前の行で選択した番号です。したがって、選択する5と、newchoice変数にが含まれますopt5

このstart !%newchoice%!行は、そのopt#変数にあるファイル名に関係なく実行されます。


どうもありがとうございました、これは美しく動作します。遅延展開(!...!)と通常の(%...%)変数の組み合わせについて調べる必要があります-これは非常に強力なようです。
dfkt 14

1

2つの方法があります。現在の状態で続行し、次を追加します。

if %choice%==1 goto BulkFileChanger
if %choice%==2 goto FiletypesMan
...
if %choice%==9 goto ShellMenuView

goto end

:BulkFileChanger
REM command here

:FiletypesMan
REM command here

etc...

:end

代わりにset /p、次のように置き換えます:

choice /c 123456789 /m Enter Choice:
if errorlevel 2 goto FiletypesMan
if errorlevel 1 goto BulkFileChanger

etc...

セットに対する選択の利点は、キーを押してから進むことです。入力は不要です。また、誤った入力では続行されません。9から1までのエラーレベルの選択肢をリストする必要があることに注意してください。


1
おかげで、プログラムがそのフォルダに追加または削除されるときのために、選択プロセス全体を動的に保ちたいです。私の質問でもっと具体的に言及すべきでした。
dfkt 14

どちらのオプションも機能しますが、選択したものを変更する場合はもう少し設定が必要です。最初のものはまだ完全に機能します。スクリプトに追加するだけで、プログラムの起動が実行されます。しかしgoto end、プログラムが開始された後は忘れていたようです。しかし、メニューを動的に作成するという部分を見逃しました。
LPChip 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.