お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

2006年10月13日

DeleteFolderメソッドで フォルダ名も消える謎

前回ブログからの続きで、 WSHによるバックアップ・スクリプトの開発中に フォルダを削除する際にハマッタこと。

実際に書いたバックアップ用のスクリプトはもっと長いのだが、 この フォルダの削除に関する失敗部分だけを抜き出して このブログで解説してみようと思う。

ここで私がプログラムしたいと思ったのは、 削除したフォルダの名前をログに記録しておくことだった。 ちなみに、WSHにおけるイベント・ログの作成方法については、 @ITの解説記事 「運用 Windows管理者のためのWindows Script Host入門」の アプリケーション・イベント・ログの作成 に詳しく解説してある。

以下のスクリプト例では、実験を簡単にするために、 GetFolderメソッドから得たフォルダ名の最初のひとつのみを扱っている。 実際に動作させているバックアップ・スクリプトでは きちんとリストにして全てのサブフォルダ名について処理している。 また、この例では イベント・ログに書き込む代わりに 画面に表示するように変更している。
//
//  フォルダ削除実験スクリプト1 WSH(JScript)
//
// FileSystemObject オブジェクトの作成
var FSO = WScript.CreateObject("Scripting.FileSystemObject");

// GetFolderメソッドからフォルダ名を抽出
//   実際は、きちんとリストしないといけませんが
//   ここでは省略して最初に見つかったひとつのサブフォルダだけを扱います。
folderNameEnu = new Enumerator( FSO.GetFolder(".").SubFolders );
var DelFolderName = folderNameEnu.item();

// 削除前にフォルダ名の表示
WScript.Echo( "削除するフォルダは " + DelFolderName + " です。");

// フォルダの削除
FSO.DeleteFolder(DelFolderName, true);

// 結果の表示
WScript.Echo( "削除したフォルダは " + DelFolderName + " です。");
ご注意:このスクリプトを実行すると、カレント・フォルダの下にあるサブフォルダをひとつ、 実際に削除してしまいますので、お取り扱いには十分にご注意ください。

で、このスクリプトを実行してみると 削除したかったフォルダは見事に削除されているのであるが、 削除後、そのフォルダ名が画面に表示されないのである。 どうも、DeleteFolderメソッドは、フォルダを削除した際に、 そのフォルダ名のインスタンスまでも削除してしまっているようだ。

削除前に、フォルダ名をログに書き込んでしまえば それで問題ないのだが、 自分としては、フォルダの削除が完了したことを確認してからログに記録したいと思った。 しかし、このように ファイル名がなくなってしまっては ログに書き込むこともできない。

次に、単純な解決方法を試してみたのだが それについては次回のブログで。

【参考リンク】

カテゴリー: プログラミング     2006年10月13日 22:52

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/586


コメント

コメントしてください




保存しますか?


 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.