バッチファイルから「ファイルを開く」ダイアログを使う。
バッチファイルの場合は、mshta.exeが便利です。
<input type=file>では、初期値、フィルタ、タイトルが固定です。
for /f "delims=" %%I in ('mshta.exe "about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(FILE.value);close();resizeTo(0,0);</script>"') do echo %%I
HtmlDlgHelperのopenfiledlg()なら、初期値、フィルタ、タイトルが変えられます。
@echo off
set "File=C:\Program Files\*.txt"
set "Filter=テキスト (*.txt)|*.txt|すべてのファイル (*.*)|*.*|"
set "Title=ファイルの選択"
for /f "delims=" %%I in ('MSHTA.EXE "about:<object id=HtmlDlgHelper classid=CLSID:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>resizeTo(0,0);function window.onload(){var Env=new ActiveXObject('WScript.Shell').Environment('Process');new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(HtmlDlgHelper.object.openfiledlg(Env('File'),null,Env('Filter'),Env('Title')).replace(/\0.*/,''));close();}</script><hta:application caption=no showintaskbar=no />"') do echo %%I