
昨年末、とあるサイトでEye-Fiとかいう無線LAN機能付SDカードの存在を知った。
正直、このサイズで無線LANが使えるのかと衝撃的で、3年も前からあるのに存在に気付かなかったことにショックを受けた。
しかし、いろいろと使い道とか調べてたんですが、どうも自分の使い方では有効活用が見出せない。
それから更にプラネックスのFluCardという、これまた昨年秋発売した無線LAN付きのSDカードの存在を知る。いろいろとレビューを読んでいると安定感と発熱の心配、無線LANの起動に制御画像ファイルを削除する発想は面白いのですが、制御画像を復活させるのにSDカードを抜き差しする手間とか考えるとイマイチ購入に踏み切れなかったんですよね。
2012年3月。やっとお待ちかねの東芝FlashAir(SD-WL008G)が発売。
とは言え、8GB(Class6)で市価\7,000前後。
買っても便利なの!?(絶対的な必要性を感じない。)
でも、なんとなく使ってみたい。。。
近所のヤマ電に行って置いてあったら買おうとしたら、そのようなSDカードは置いてないと撃沈。
次、ジョ○シンに寄ったら20枚も在庫カードがある。おぉ♪
でもやっぱり、\6,980。。。むむむむ。。。躊躇するなぁ。。。
You!買っちゃいなよ♪
天の声が聞こえて(ないけど)レジへ。。。
カード決済でサインしようとしたら\6,000ぐらいの値段になってて、なんか価格設定間違ってませんかと思いつつ後で確認したら3月決算在庫処分セールで15%OFFで買えた(ラッキー!!!)
さっそく、自宅でSSIDとパスの初期設定を変更してデジカメ画像を参照。
画像のようなサムネイルがブラウザに並ぶわけです。画像ファイルに限らずEXEとかも表示。
それじゃ任意のファイルを拾っていくかと、ひとつひとつ開いて画像を保存。。。。
やってられん。。。
他のユーザーは、どうやっているのか。
FireFoxとかは画像を一括取得する便利なアドインがあるらしいが、このFlashAirのためだけに環境とか余計なツール入れたくないな。。。
そこでWeb上に載っているVBScriptのサンプルをいくつか繋ぎ合わせてやれば簡易ファイル取得Scriptが作れそうなので作ってみた。
(見栄えが悪いとかナシね)
InputBoxには、FlashAirからファイルを取得したい直下のURLとファイル検索キーワードを空白で空けて入力。
前半は、直下URLのHTMLテキストを取得。
そのHTMLテキスト内で検索キーワードで拾ったファイル名称を取得。
VBScriptと同じカレントフォルダに指定ファイルがコピーされる。
このとき、同一ファイルがある場合は更新しない。(TimeStampチェックはしていない)
以下、Scriptをメモ帳などにコピペして字下げの全角スペースを半角スペースに置換した上で、
FlashAir.vbsとか名称をつけて保存。
適当なフォルダに保存したVBScriptファイルを置いて実行すればOK。
いずれ、東芝から便利なツール/アプリが無償配布されるだろうけど。。。
今のままだと、デジカメから無線LANでファイルが取得できる。ってだけなので。
ちなみに動作確認機種:富士フィルムZ950EXR(静止画/動画ともにOK)
3DS(一応動作確認)編とかは別Blogで。
以下、VBScript
Option Explicit
Dim objSrvHTTP, Stream, Fso
Set objSrvHTTP = Wscript.CreateObject("MSXML2.XMLHTTP")
Set Stream = Wscript.CreateObject("ADODB.Stream")
Set Fso = Wscript.CreateObject( "Scripting.FileSystemObject" )
Dim strCurPath, obj, strUrl, strChr
strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path
Dim inpStr
Dim strVal
Dim aryStrings
Dim lngPos
Dim objFso, objFile
Dim iMsg
Dim objFsoChk ' FileSystemObject
Dim strFile ' Exist FileName&Path
''----- arg get
'if WScript.Arguments.Count < 2 then
' WScript.Quit
'end if
'strUrl = WScript.Arguments.Item(0)
'strChr = WScript.Arguments.Item(1)
inpStr = InputBox("Input FlashAirURL & FindFileNameKeyWord","Input URL & FindKeyWord")
if inpStr = "" then
WScript.Quit
end if
aryStrings = Split(inpStr, " ")
strUrl = aryStrings(0)
strChr = aryStrings(1)
if strUrl = "" And strChr = "" then
WScript.Quit
end if
'----- Get URL html src code text
on error resume next
Call objSrvHTTP.Open("GET", strUrl, False )
if Err.Number <> 0 then
Wscript.Echo Err.Description
Wscript.Quit
end if
objSrvHTTP.Send
if Err.Number <> 0 then
Wscript.Echo Err.Description
Wscript.Quit
end if
Stream.Open
Stream.Type = 1 ' Binary
Stream.Write objSrvHTTP.responseBody
'Stream.SaveToFile strCurPath & "\" & Fso.GetFileName(strUrl), 2
Stream.SaveToFile strCurPath & "\" & "tmp.txt", 2
Stream.Close
'----- Read html src code text file
on error resume next
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.OpenTextFile(strCurPath & "\" & "tmp.txt", 1, False)
If Err.Number > 0 Then
WScript.Echo "Open Error"
WScript.Quit
end if
Set objFsoChk = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number > 0 Then
WScript.Echo "Open Error"
WScript.Quit
Else
Do Until objFile.AtEndOfStream
strVal = objFile.ReadLine
lngPos = InStr(1, strVal, strChr)
if lngPos <> 0 then
aryStrings = Split(strVal, ",")
'----- CurFile Exist Check
strFile = strCurPath & "\" & aryStrings(1)
If objFsoChk.FileExists(strFile) = False Then
'----- get URL FileName
Call objSrvHTTP.Open("GET", strUrl & "/" & aryStrings(1) , False )
if Err.Number <> 0 then
Wscript.Echo Err.Description
Wscript.Echo strUrl & "/" & aryStrings(1)
Wscript.Quit
end if
objSrvHTTP.Send
if Err.Number <> 0 then
Wscript.Echo Err.Description
Wscript.Quit
end if
Stream.Open
Stream.Type = 1 ' Binary
Stream.Write objSrvHTTP.responseBody
Stream.SaveToFile strFile, 2
Stream.Close
End If
end if
Loop
End If
on error goto 0
objFile.Close
Set objFile = Nothing
Set objFso = Nothing
Set objFsoChk = Nothing
iMsg = MsgBox("Get File(s) Completed!", vbInformation + vbOKOnly ,"FlashAir Get File(s)")