5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

バッチ実行中にファイル選択やフォルダ選択を行うGUI その2

Last updated at Posted at 2025-03-30

はじめに

以前、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

image.png

結果
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

image.png

結果
C:\Temp>folderRef.bat
selected  folder is : "C:\Temp\iniTest"
続行するには何かキーを押してください . . .

最後に

これまでは、フォルダ固定にしていたりファイルやフォルダをドラッグ&ドロップして引数から処理してました。自分が使用するだけならいいのですが、他の人に操作を依頼するなら、GUIでファイル選択やフォルダ選択できれば、操作性は向上します。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?