HOMING★WONDER
秀丸マクロ ファイル/フォルダが存在するか確認する
最終更新:
kouraku_tiritomado
-
view
include_js plugin Error : このプラグインで利用できない命令または文字列が入っています。
外部プログラムから戻り値取得 - 秀丸パイプ の応用例です。
run系命令&バッチでは手軽にできなかった処理として、ファイル/フォルダの確認があります。秀丸パイプ&VBSで実装してみましょう。
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 には多くの機能が詰まっています。秀丸パイプでやり取りすれば、マクロ環境に用意されていない便利なファイル管理機能が使えるようになります。お互いうまく住み分けて連携すれば、簡単に高機能なマクロツールが開発できそうです。