- ベストアンサー
Windows2000 Serverで特定のフォルダを開いて閉じるプログラムを教えてください
- Windows2000 Serverのサーバーで、特定のフォルダを自動で開いて閉じる処理を行いたいです。
- 現在、特定のフォルダを開くコマンドはわかっていますが、閉じるコマンドが不明です。
- 同様の質問があるサイトでも、指定のフォルダを閉じる方法が明確になっていないため、助けを求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答番号:No.1 お礼へのアドバイスです。 mk-sanさんもお気づきと思いますが、対象のフォルダを開いて閉じるのが最善の対策かどうかは疑問ですね。 5000ファイルを溜め込む処理(どういう間隔で? 1日で?)を見直すのがよいかもしれませんし、また、目視で5000ファイル全てを確認するのではないでしょうから、フォルダを開かずに目的のファイルだけを直接開けばよいかもしれません。 やはりフォルダを開かざるを得ないとしても、キャッシュを有効にするためにはフォルダを開いて閉じなくてもスクリプトでフォルダ内を空読みすればよさそうな気がします。 一般論として、OSへの要求(本件の場合フォルダを開いて閉じる)は避けられるものなら避けた方がシステム全体の性能のためには良いと思います。
その他の回答 (1)
- SHIMAPEE
- ベストアンサー率75% (154/203)
閉じるためにはWindowを探すという不確実な方法を取るしかなさそうです。VBS(WSH VBScript)で書くと例えば下のようになります。Windows XP SP3で試しましたがWindows2000 Serverでも同様にできると思います。 なお、数秒開いて自動的に閉じることの目的は何でしょうか。確認するためにはじっくり眺めてから手動で閉じるべきでは。 例えばファイルが1個以上存在すればOKとか? もしそうでしたらフォルダを開かずにスクリプトでチェックした方がよいと思います。 目的を書いて頂ければ別の回答があるかもしれません。 'goo4540635.vbs Option Explicit Dim FolderName, WshShell, fso, Return FolderName = "C:\Program Files" '★開くフォルダのフルパス Set WshShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Return = WshShell.Run("""" & FolderName & """", 1) 'フォルダを開く if Return=0 then WScript.Sleep 3000 '★3000ms待つ WshShell.AppActivate fso.GetFileName(FolderName) 'Windowを探す WScript.Sleep 100 WshShell.SendKeys "%{F4}" 'ALT+F4キーを送って閉じる end if
お礼
SHIMAPEEさん ありがとうございます。 ご指摘いただいている”目的”ですが、 Win2kサーバーをファイルサーバーとして利用しているのですが、 1つのフォルダ内に5000ファイルほどをためてしまう構造になっています。(サーバの他のフォルダからスクリプト(?)のようなものを使って、自動的にそのフォルダにデータがたまるようになっています。) そのためなのかは、よくわからないのですが、そのフォルダをサーバー上で開くと、数十秒近く時計マークがでてなかなかフォルダ内のデータを確認できません。一度そのフォルダを開くと、その後は瞬時に開くようになります。(キャッシュの問題では?と同僚から言われております。) 他の処理にも何となくですがレスポンスが悪くなっているような気がします 構造的な問題があるかもしれないのですが、このレスポンスの悪さを解消するために、データを移動させるスクリプトにデータ移動後、フォルダを開いて、閉じるという内容を加えたいと思っております。 この処理をする際には、指定のフォルダ以外は開いていないようにする予定です。 このようなご回答で今回の投稿内容の目的をご理解いただけるでしょうか。
お礼
SHIMAPEEさん。 貴重なご回答ありがとうございます。 やはり5000件ものファイルを溜め込むことからの見直しからスタート しようかと思います。 ありがとうございました。