- ベストアンサー
temp内ファイルを削除するプログラムを組みたい
- WindowsのTEMPフォルダ内にあるファイルを削除するプログラムを作成したいです。
- しかし、profileのtemp内やcookies内のファイルになるとファイルパスが異なるため、簡単には削除できません。
- どのように組めば効率的にprofileのtemp内とcookies内のファイルを削除できるでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Dim FSO Dim Folder Dim SubFolders Dim SubFolder Dim SubFolder2 Dim SubFolder3 Dim File Dim Path Path = "C:\documents and settings\" Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder(Path) For Each SubFolder In Folder.SubFolders For Each SubFolder2 In SubFolder.SubFolders If UCase(SubFolder2.Name) = "TEMP" Then Set SubFolder3 = FSO.GetFolder(Path & SubFolder.Name & "\TEMP") For Each File In SubFolder3.Files FSO.DeleteFile Path & SubFolder.Name & "\TEMP\" & File.Name Next End If Next Next Set File = Nothing SEt Folder = Nothing Set FSO = Nothing で一応できますが、権限によっては他ユーザーのフォルダにはアクセスできない場合があります。
その他の回答 (4)
- nicotinism
- ベストアンサー率70% (1019/1452)
一人一台ならこんな風に使っていますが 複数の人が同じPCを使っていた場合にSystem の『TEMP』フォルダを削除するのは 止めといたほうが・・・ ましてや他人のパーソナルフォルダは・・・ 多分アクセス権で蹴られるかも?と思いますが・・・ また、何がおきるのかユーザーにちゃんと伝えておかないと。 環境変数は、CMD の SET で確認できます。 WinXPならマイコンピュータのプロパティから詳細設定の環境変数で。 ○×.bat rem ログオフ時に一時フォルダの削除・再作成をします rem C:\WINDOWS\system32\GroupPolicy\User\Scripts\Logoff\ に rem コピーして使用 rem グループポリシーエディタは、ファイル名を指定して実行から rem gpedit.msc で開きます rem Temporary Folder の削除・再作成 rmdir %temp% /s /q rmdir %tmp% /s /q mkdir %Temp% mkdir %Tmp% rem 最近使ったファイルの削除 rem userprofileを使ってるのでLogOffフォルダに格納 del "%userprofile%\recent\*.lnk" /f /q del "%userprofile%\recent\*.url" /f /q
補足
社内で決められた業務システム以外は利用禁止ですので、現状のシステムではtempフォルダ内を削除しても問題なしという結論になっています。 tempフォルダ内を削除した事により「独自で導入したアプリ」が正常に起動しなくなっても責任をとる必要がないとなるのです。 でも、確かに… 遅いと言われるユーザprofileのtempフォルダ内削除とwindows\tempフォルダ内削除でもいいですね。 同じPCを使う他のユーザも遅いというのであれば、ログインしてもらってからファイル実行すればいいのですから。 ありがとうございます。
- layy
- ベストアンサー率23% (292/1222)
環境変数は使わない?
補足
EXEファイルにしない理由は、どこをどう消しているのか私以外のシステム管理者がわかるようになのです。 ソースを見て「あぁ、ここをこういう風に消しているんだね」と分かればOKなのです。 環境変数を使っても問題なしです。 条件はただ1つ「ソースが見れる事」ですから。
- localica
- ベストアンサー率52% (202/385)
提示された条件だけなら社員コートをワイルドカードにすれば充分ではないでしょうか。 C:\Documents and Settings\*\Cookies C:\Documents and Settings\*\Local Settings\Temp ディスククリーンアップとかWindows標準の機能を使う方が良い気がしますけど。
- localica
- ベストアンサー率52% (202/385)
提示された条件だけなら社員コートをワイルドカードにすれば充分ではないでしょうか。 C:\Documents and Settings\*\Cookies C:\Documents and Settings\*\Local Settings\Temp ディスククリーンアップとかWindows標準の機能を使う方が良い気がしますけど。
補足
c:\a\b\c\test.txtを用意してc:\batファイルを実行しました。 <test.bat> echo off del C:\a\*\c pause 実行すると… 「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」 となります。 <test.bat>を以下のようにすればきちんとファイルは消してくれます。 echo off del C:\a\b\c pause PCが遅くなったから速くしてほしいという依頼が最近多いので、batファイル実行でゴミファイルを削除するbatファイルを作ろうと思った次第です。 絶対パスのフォルダ内にあるファイルならば指定すればいいのですが、profile内はどうしよう?と思っての質問です。 batファイル(スクリプト)を実行するだけで簡単にゴミファイル削除、テンポラリファイル削除を行ないたいのです。
補足
ありがとうございます。 作っていただいたスクリプトは… C:\documents and settings\(Profile名)\temp\ この下にある「ファイル」を削除するというスクリプトですね。 実際はC:\documents and settings\(Profile名)\Local Settings\temp\ですので、これくらいなら私側でさせていただきます。 それと、このスクリプトですと、temp\以下のファイルは消えるがフォルダ(と、その中身のファイル)までは消してくれないです…