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クラスのドキュメントを参照してください。Title
InitialDirectory