バッチファイルの中でファイルダイアログや フォルダーダイアログや メッセージボックスを表示してファイル名などの戻り値をバッチファイルの変数に連携する方法

2024年4月24日

Vbスクリプトを使用せずパワーシェルで行う方法です

ファイルダイアログ

FOR /F "usebackq" %%a IN (`powershell -command "Add-Type -assemblyName System.Windows.Forms ; $dialog = New-Object System.Windows.Forms.OpenFileDialog;if ($dialog.ShowDialog() -eq 'OK') { return ($dialog.FileName)} else { return ('')}"`) DO @SET contents=%%a
echo %contents%

フォルダーダイアログ

FOR /F "usebackq" %%a IN (`powershell -command "Add-Type -assemblyName System.Windows.Forms ; $dialog = New-Object System.Windows.Forms.FolderBrowserDialog;if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::Cancel) { return ($null)} else { return ($dialog.SelectedPath)} "`) DO @SET contents=%%a
echo %contents%

メッセージボックス

FOR /F "usebackq" %%a IN (`powershell -command " Add-Type -assemblyName System.Windows.Forms ;return [System.Windows.Forms.MessageBox]::Show('which', 'which', 'YesNo')"`) DO @SET contents=%%a
echo %contents%

if "%contents%" equ  "Yes" (
echo レベル0
) else if "%contents%" equ  "No" (
echo レベル1
) else (
echo レベルは%contents%
)

ボタンの種類を変える

OK
YesNo
OKCancel
YesNoCancel

bat,PowerShell ,windows

Posted by eightban