3

cmdから「open」ダイアログボックスを開くことができるかどうか知りたいので、それを使用して開く適切なファイルを選択できます。(私はすでにcmdから直接ファイルを開く方法を知っていますが、それは私が興味を持っていたものではありません)

現在、私はプログラム(program.exeなど)を使用するプロジェクトを行っています。このプログラムにはモデルファイル(例:modelfile.mod)が必要です。CMDでprogram.exemodelfile.modと記述してプログラムを実行すると、動作します。異なる名前のモデルファイルがたくさんありますが、プログラムファイルは常に同じ名前です。プログラムを実行する必要があるたびにCMDに書き込む代わりに、実行したいmodfileを選択できるバッチを作成し、その後、選択したmodfileを入力としてプログラムを実行します。

したがって、cmdから「open」ダイアログボックスを開く方法と、プログラムの実行に使用するために選択したファイルの名前を取得する方法を知る必要があります。

4

1 に答える 1

2

PowerShellがインストールされている場合は、次のように実行できます。

@echo off
setlocal
set ps_cmd=powershell "Add-Type -AssemblyName System.windows.forms|Out-Null;$f=New-Object System.Windows.Forms.OpenFileDialog;$f.Filter='Model Files (*.mod)|*.mod|All files (*.*)|*.*';$f.showHelp=$true;$f.ShowDialog()|Out-Null;$f.FileName"

for /f "delims=" %%I in ('%ps_cmd%') do set "filename=%%I"

if defined filename (
    echo You chose %filename%
) else (
    echo You didn't choose squat!
)

goto :EOF

または、メンテナンスを容易にするためにPowerShellコマンドレットを分解する場合:

@echo off
setlocal
set "ps=Add-Type -AssemblyName System.windows.forms | Out-Null;"
set "ps=%ps% $f=New-Object System.Windows.Forms.OpenFileDialog;"
set "ps=%ps% $f.Filter='Model Files (*.mod)|*.mod|All files (*.*)|*.*';"
set "ps=%ps% $f.showHelp=$true;"
set "ps=%ps% $f.ShowDialog() | Out-Null;"
set "ps=%ps% $f.FileName"

for /f "delims=" %%I in ('powershell "%ps%"') do set "filename=%%I"

if defined filename (
    echo You chose %filename%
) else (
    echo You didn't choose squat!
)

goto :EOF

(PowerShellコマンドはJust Tinkering Blogから容赦なくリーチされました。)やなどの設定可能な他のプロパティについては、 OpenFileDialogクラスのドキュメントを参照してください。TitleInitialDirectory

于 2013-03-27T12:23:39.107 に答える