• atwiki
  • HOMING★WONDER
  • 秀丸マクロ ファイル/フォルダが存在するか確認する の編集履歴一覧

「秀丸マクロ ファイル/フォルダが存在するか確認する」の編集履歴(バックアップ)一覧に戻る

秀丸マクロ ファイル/フォルダが存在するか確認する - (2010/12/28 (火) 15:28:52) の編集履歴(バックアップ)


外部プログラムから戻り値取得 - 秀丸パイプ の応用例です。
run系命令&バッチでは手軽にできなかった処理として、ファイル/フォルダの確認があります。秀丸パイプ&VBSで実装してみましょう。

file_exists.vbs - FileSystemObject.FileExists() サンプル

Option Explicit

Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

'標準入力を読んでファイル検索し、標準出力に書き出します
If objFSO.FileExists( WScript.StdIn.ReadLine ) = True then
    Wscript.Echo "True"
Else
    Wscript.Echo "False"
End If

WScript.Quit

folder_exists.vbs - FileSystemObject.FolderExists() サンプル

Option Explicit

Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

'標準入力を読んでフォルダ検索し、標準出力に書き出します
If objFSO.FolderExists( WScript.StdIn.ReadLine ) = True then
    Wscript.Echo "True"
Else
    Wscript.Echo "False"
End If

WScript.Quit
FileSystemObject の詳しい説明は省きますが、標準入力の一行目の文字列を ファイル名 / フォルダ名 として検索し、その結果を標準出力に "True" / "False" の文字列で書き出しています。

秀丸パイプを使ったマクロからの vbs 呼び出し例

loaddll "HmPipe.hmf";

'file_exists.vbs を呼んでみる
$outstr1 = dllfuncstr("HmPipeRun", "C:¥¥WINDOWS¥¥notepad.exe",
		"cscript.exe", "//nologo file_exists.vbs");

'folder_exists.vbs を呼んでみる
$outstr2 = dllfuncstr("HmPipeRun", "C:¥¥Program Files",
		"cscript.exe", "//nologo folder_exists.vbs");

freedll;
endmacro;
$outstr1,2 にはそれぞれ、検索した結果が "True" / "False" として格納されています。



基本的には、ファイルの内容を解析したり編集したりするのはマクロ側の仕事です。とは言え、スクリプトで提供される FileSystemObject には多くの機能が詰まっています。秀丸パイプでやり取りすれば、マクロ環境に用意されていない便利なファイル管理機能が使えるようになります。お互いうまく住み分けて連携すれば、簡単に高機能なマクロツールが開発できそうです。



記事メニュー
目安箱バナー