「秀丸マクロ ファイル/フォルダが存在するか確認する」の編集履歴(バックアップ)一覧はこちら
「秀丸マクロ ファイル/フォルダが存在するか確認する」(2010/12/28 (火) 15:34:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#include_js(http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/shCore.js)
#include_js(http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/shBrushCpp.js)
#include_js(http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/shBrushVb.js)
[[外部プログラムから戻り値取得 - 秀丸パイプ>秀丸マクロ 外部プログラムから戻り値を得る方法 - 秀丸パイプの使い方]] の応用例です。
run系命令&バッチでは手軽にできなかった処理として、ファイル/フォルダの確認があります。秀丸パイプ&VBSで実装してみましょう。
*file_exists.vbs - FileSystemObject.FileExists() サンプル
#html2(){<pre name="code" class="vb:nocontrols">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</pre>}
*folder_exists.vbs - FileSystemObject.FolderExists() サンプル
#html2(){<pre name="code" class="vb:nocontrols">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</pre>}
FileSystemObject の詳しい説明は省きますが、標準入力の一行目の文字列を ファイル名 / フォルダ名 として検索し、その結果を標準出力に "True" / "False" の文字列で書き出しています。
*秀丸パイプを使ったマクロからの vbs 呼び出し例
#html2(){<pre name="code" class="cpp:nocontrols">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;</pre>}
$outstr1,2 にはそれぞれ、検索した結果が "True" / "False" として格納されています。
----
基本的には、ファイルの内容を解析したり編集したりするのはマクロ側の仕事です。とは言え、スクリプトで提供される FileSystemObject には多くの機能が詰まっています。秀丸パイプでやり取りすれば、マクロ環境に用意されていない便利なファイル管理機能が使えるようになります。お互いうまく住み分けて連携すれば、簡単に高機能なマクロツールが開発できそうです。
----
#javascript(){{
<script type="text/javascript"><!--
dp.SyntaxHighlighter.ClipboardSwf = 'http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
//--></script>
}}
#include_js(http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/shCore.js)
#include_js(http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/shBrushCpp.js)
#include_js(http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/shBrushVb.js)
[[外部プログラムから戻り値取得 - 秀丸パイプ>秀丸マクロ 外部プログラムから戻り値を得る方法 - 秀丸パイプの使い方]] の応用例です。
run系命令&バッチでは手軽にできなかった処理として、ファイル/フォルダの確認があります。秀丸パイプ&VBSで実装してみましょう。
*file_exists.vbs - FileSystemObject.FileExists() サンプル
#html2(){<pre name="code" class="vb:nocontrols">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</pre>}
*folder_exists.vbs - FileSystemObject.FolderExists() サンプル
#html2(){<pre name="code" class="vb:nocontrols">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</pre>}
FileSystemObject の詳しい説明は省きますが、標準入力の一行目の文字列を ファイル名 / フォルダ名 として検索し、その結果を標準出力に "True" / "False" の文字列で書き出しています。
*秀丸パイプを使ったマクロからの vbs 呼び出し例
#html2(){<pre name="code" class="cpp:nocontrols">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;</pre>}
$outstr1,2 にはそれぞれ、検索した結果が "True" / "False" として格納されています。
----
基本的には、ファイルの内容を解析したり編集したりするのはマクロ側の仕事です。とは言え、スクリプトで提供される FileSystemObject には多くの機能が詰まっています。秀丸パイプでやり取りすれば、マクロ環境に用意されていない便利なファイル管理機能が使えるようになります。お互いうまく住み分けて連携すれば、簡単に高機能なマクロツールが開発できそうです。
----
#javascript(){{
<script type="text/javascript"><!--
dp.SyntaxHighlighter.ClipboardSwf = 'http://www31.atwiki.jp/kouraku_tiritomado/pub/SyntaxHilighter/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
//--></script>
}}
表示オプション
横に並べて表示:
変化行の前後のみ表示: