2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« IE8で、<input type=file>の.valueがc:\fakepath\filenameを返す。(その2) | トップページ | バッチファイルからMsgBox()を使う。 »

2009年5月31日 (日)

バッチファイルから「ファイルを開く」ダイアログを使う。

バッチファイルの場合は、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

« IE8で、<input type=file>の.valueがc:\fakepath\filenameを返す。(その2) | トップページ | バッチファイルからMsgBox()を使う。 »