はじめに
以前、Visual Basic Advent Calendar 2021 にて、VBScript を使用してバッチ実行中にファイル選択やフォルダ選択を表示する記事を投稿しました。
VBScriptが廃止方向になっているため、代替としてPowerShellで組み直しました。
ファイル選択
項目 | 内容 |
---|---|
初期フォルダ | set InitialDirectory=(初期フォルダを指定) |
タイトル | set Title=(タイトル名を指定) |
拡張子フィルター | set "Filter=(フィルターを指定)" |
fileRef.bat
@echo off
set InitialDirectory=C:\Temp
set Title=ファイルを選択してください
set "FILTER=テキスト (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
set diaglog="Add-Type -AssemblyName System.Windows.Forms;
set diaglog=%diaglog%$f = new-object Windows.Forms.OpenFileDialog;
set diaglog=%diaglog%$f.Filter = '%FILTER%';
set diaglog=%diaglog%$f.InitialDirectory = '%InitialDirectory%';
set diaglog=%diaglog%$f.Title = '%Title%';
set diaglog=%diaglog%$f.ShowHelp = $true;
set diaglog=%diaglog%$f.Multiselect = $true;
set diaglog=%diaglog%[void]$f.ShowDialog();
set diaglog=%diaglog%if ($f.Multiselect) { $f.FileNames } else { $f.FileName }"
for /f "delims=" %%I in ('powershell -ExecutionPolicy RemoteSigned -NoProfile -Command %diaglog%') do (
echo selected file is : "%%~I"
)
pause
結果
C:\Temp>fileRef.bat
selected file is : "C:\Temp\江戸時代の円周率.txt"
続行するには何かキーを押してください . . .
フォルダ選択
項目 | 内容 |
---|---|
ルートフォルダ | set RootFolder=(ルートフォルダを指定) |
初期フォルダ | set SelectedPath=(初期フォルダを指定) |
説明 | set Description=(説明を指定) |
folderRef.bat
@echo off
set RootFolder=MyComputer
set SelectedPath=C:\Temp
set Description=読込みフォルダを選択してください
set diaglog="Add-Type -AssemblyName System.Windows.Forms;
set diaglog=%diaglog%$f = new-object Windows.Forms.FolderBrowserDialog;
set diaglog=%diaglog%$f.Description = '%Description%';
set diaglog=%diaglog%$f.RootFolder = '%RootFolder%';
set diaglog=%diaglog%$f.SelectedPath = '%SelectedPath%';
set diaglog=%diaglog%[void]$f.ShowDialog();
set diaglog=%diaglog%$f.SelectedPath"
for /f "delims=" %%I in ('powershell -ExecutionPolicy RemoteSigned -NoProfile -Command %diaglog%') do (
echo selected folder is : "%%~I"
)
pause
結果
C:\Temp>folderRef.bat
selected folder is : "C:\Temp\iniTest"
続行するには何かキーを押してください . . .
最後に
これまでは、フォルダ固定にしていたりファイルやフォルダをドラッグ&ドロップして引数から処理してました。自分が使用するだけならいいのですが、他の人に操作を依頼するなら、GUIでファイル選択やフォルダ選択できれば、操作性は向上します。