• 締切済み

vbscriptで作成後90日経過したフォルダを削除する方法を教えてください。

こんにちは。 WindowsServer2003の環境で、以下のVBSを使用して作成後に90日経過したファイルを削除しています。 フォルダもファイルと同様に、作成後に90日経過したら削除を行いたいので、フォルダを削除する方法をお教えください。 ファイル削除の参考にしたサイト http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/nov06/hey1117.mspx ファイル削除VBS dtmDate = Date - 90 strDay = Day(dtmDate) If Len(strDay) < 2 Then strDay = "0" & strDay End If strMonth = Month(dtmDate) If Len(strMonth) < 2 Then strMonth = "0" & strMonth End If strYear = Year(dtmDate) strTargetDate = strYear & strMonth & strDay strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set FileList = objWMIService.ExecQuery _ ("ASSOCIATORS OF {Win32_Directory.Name='C:\WINDOWS\system32\LogFiles\W3SVC1'} Where " _ & "ResultClass = CIM_DataFile") For Each objFile In FileList strDate = Left(objFile.CreationDate, 8) If strDate < strTargetDate Then If objFile.Extension = "log" Then objFile.Delete End If End If Next よろしくお願いいたします。

みんなの回答

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

objFileの属性を調べ、フォルダであればDeleteFolderメソッドで消せる? Attributes プロパティ http://msdn.microsoft.com/ja-jp/library/cc428087.aspx DeleteFolder メソッド http://msdn.microsoft.com/ja-jp/library/cc427996.aspx 的外れでしたらすみません

関連するQ&A

  • 複数のフォルダ内の名前や作成日等をリスト化する方法

    複数のフォルダ内の名前や作成日等をリスト化する方法 こんにちは。 以下に示しますマクロは フォルダ内の名前や作成日等(サブディレクトリを含む)をリスト化するもので 以前同サイト内で教えて頂きました。 現在このマクロでは シート1のAセルにフォルダのパスを入力して実行すると、 シート2にフォルダ内の情報がリスト化されます。 このマクロでは1つのフォルダ内の情報をリスト化することが可能ですが、 今回は更に、 エクセルのA列にフォルダのパスを複数個入力し、 それらのフォルダ内の情報を、それぞれ別シートに 一気にリスト化したいと考えています。 ご存じの方がいらっしゃいましたら よろしくお願いいたします。 Sub makeFileList()   Call fileList   MsgBox "終了しました" Columns.AutoFit 'すべての列幅を自動調整する End Sub    Function fileList(Optional trgDir As String = "", Optional fCnt As Long = 0)   On Error GoTo err   Dim objFs As Object   Dim objDir As Object   Dim objFile As Object   Dim i As Long      Set objFs = CreateObject("Scripting.FileSystemObject")      If trgDir = "" Then     Set objDir = objFs.Getfolder(Sheets("sheet1").Range("a1"))   Else     Set objDir = objFs.Getfolder(trgDir)   End If      Set objFile = objDir.Files        With Sheets("sheet2")     For Each objFile In objDir.Files         fCnt = fCnt + 1 .Cells(fCnt, 1).Offset(1, 0) = fCnt .Cells(fCnt, 2).Offset(1, 0) = objFile.DateCreated .Cells(fCnt, 3).Offset(1, 0) = objFile.DateLastModified .Cells(fCnt, 4).Offset(1, 0) = objFile.Path .Range("A1").Value = "No" .Range("B1").Value = "作成日" .Range("C1").Value = "更新日" .Range("D1").Value = "ファイル名"     Next objFile          For Each objDir In objDir.SubFolders       If objDir.Attributes <> 22 Then   'システムフォルダ除外                      '--------------サブフォルダの再帰検索             Call fileList(objDir.Path, fCnt)           '--------------サブフォルダの再帰検索                End If     Next objDir   End With      Set objFile = Nothing   Set objDir = Nothing   Set objFs = Nothing Exit Function err:   Select Case err.Number     Case 76 ' path がない       MsgBox "path 指定が間違っています"     Case Else       MsgBox err.Number & vbCrLf & err.Description   End Select      Set objFile = Nothing   Set objDir = Nothing   Set objFs = Nothing End Function

  • 「~○ヶ月○日」という表示方法 2

    以前こちらで同じ質問をさせていただきました。 教えていただいた方にもう1度聞こうと思ったんですが ここではそれはできないようなので、どなたか教えてください! 「HPを開設してから○ヶ月と○日が経ちました」 というような表示をしたいのです。 以前教えていただいた方法でうまく表示されていたのですが、 最近ちょっとくるってるんです。 本当は4ヶ月と22日(5/4現在)なんですが 5ヶ月と8日と表示されてしまいます。 なぜでしょうか? いろいろ検索してまわったのですが、 どれも何日という表示方法で、○ヶ月というのは見つかりませんでした。 以前教えていただいたのは↓です。 <SCRIPT> var StrMsg = ""; var dtToday = new Date;//現在の日付を取得する。 var StDay = new Date(2001,12,12);//Date(年,月,日)開設した年月日を入れておく。 //現在の日付から開設日付を引き何日経過したのかを取得する if(StDay.getMonth()>=dtToday.getMonth()+1){ var strMonth = StDay.getMonth()-(dtToday.getMonth()+1); }else{ var strMonth = (dtToday.getMonth()+1)-StDay.getMonth(); } if(dtToday.getDate()>=StDay.getDate()){ var strDate = dtToday.getDate()-StDay.getDate(); }else{ var strDate = StDay.getDate()-dtToday.getDate(); } //HTMLへと出力する if(strMonth != 0){ StrMsg = StrMsg + strMonth+"ヶ月と"; } if(Date != 0){ StrMsg = StrMsg + strDate+"日"; } if(StrMsg.length != 0){ document.write("HPを開設してから"+ StrMsg +"が経ちました"); }</SCRIPT> お願いします!!

  • VBSでフォルダ、ファイル作成時のエラーコード

    フォルダ、ファイルが存在しないとき、作成するスクリプトをVBSで作成していますが、疑問点があるのでご教示ください。 objFSO.CreateFolder、objFSO.CreateTextFileを実行が、正常に行われた場合、 Err.Numberに0がセットされると思っていましたが、実際は違っていました。 objFSO.CreateFolderでフォルダが作成される場合、Err.Numberに13が返されます。 objFSO.CreateTextFileでファイルが作成される場合、Err.Numberに438が返されます。 このスクリプトを実行後、フォルダ、ファイルが存在しない場合、作成されることも確認しています。 フォルダ作成後、作成されたフォルダに対して、ファイルの作成/データの書き込みのアクセス権を拒否にすると返されるErr.numberに70がセットされることも確認しています。 なぜ、フォルダ、ファイルが作成された場合、0が返されないのかご存知の方がいらっしゃいましたらご教示ください。 また、その情報が記載されている書籍およびサイトがあれば、お教えいただければ、幸いです。 Option Explicit Dim objFSO Dim objFile Const strFolderName = "C:\VBS" Const strFileName = "C:\VBS\test.txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then WScript.Echo "FSOオブジェクトを作成しました" Else WScript.Echo "FSOオブジェクトを作成できませんでした" WScript.Quit(1) End If If objFSO.FolderExists(strFolderName) Then WScript.Echo "フォルダが見つかりました" Else WScript.Echo "フォルダが見つかりませんでした" If objFSO.CreateFolder(strFolderName) Then If Err.Number = 13 Then WScript.Echo "フォルダを作成しました" Else WScript.Echo "フォルダを作成できませんでした" WScript.Quit(1) End If End If End If If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else Script.Echo "ファイルが見つかりませんでした" If objFSO.CreateTextFile(strFileName) Then If Err.number = 438 Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If End If

  • VBS

    VBSであるファイルを1行ずつ読み込み、その読み込んだ値を ある別のファイルにリダイレクトしたいのですが、 どのように書けばよいか教えてください。 下記のように、echoでは出すことができるのですが、 ファイルにリダイレクトというのができません。 よろしくお願いします。 ==== sample shell ========================= Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("d:\dr1.txt") If Err.Number = 0 Then Do While objFile.AtEndOfStream <> True WScript.Echo objFile.ReadLine Loop objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing ============================================================

  • 入力ボックス閉じた時間を出力する方法

    こんにちは。 下記に記載しましたスクリプトは、 VBSファイルを実行することにより入力ボックスが表示され、 入力ボックスに文字列を入力すると、 「Active.csv」というファイルに 『現在の時間』と『入力文字列』が出力されます。 このVBSスクリプト内に入力ボックスにて「OK」を 押したときの時間を拾っていれたいと思っております。 どのような手法が考えられますでしょうか? ご教授のほど、よろしくお願いします。 Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル書き込み用 Dim Reason ' ファイル入力 Reason = InputBox("何かいれてください。") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("Active.csv", 8, True) If Err.Number = 0 Then objFile.Write(Date()) objFile.Write(",") objFile.Write(Time()) objFile.Write(",") objFile.Write(Reason) objFile.Write(",") 'ここに入力ボックスにて「OK」を押したときの時間を拾っていれたいです。 objFile.Write(",") objFile.Write(vbNewLine) objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If

  • 特定のフォルダに入れたファイルを一定時間が経過したら削除する方法 VBS ?

    特定のフォルダ >>例えば..\\a\folderに入れたファイルを一定時間が経過したら削除する方法を教えてください。 イメージとしてはタスクスケジューラなどで15分毎にバッチファイルが動作するように設定しておき、 そのバッチからvbsなどをキックして現在の時間と保存されているファイルの時間差を確認してvbs内で入力してある一定の時間を経過していたら削除というようなものにしたいと思っています。 動作のイメージは湧くのですが、いざvbsを書こうと何から手をつけていいのかもわからず、参考になるサイトや簡単なものであるのであれば作成のアドバイスを頂けたらと思い投稿いたしました。 またそのようなことを実現するフリーソフトなどあれば教えてください。よろしくお願いします。

  • WSH/VBScript DHCPの有効設定について

    お世話になっております。 毎度お手数をお掛けしていますが、よろしくお願いいたします。 WSHにてDHCPの有効設定を行ったところ、 WindowsVistaで以下の通り実行すると DHCPは有効になりますが、Staticで設定していたデフォルトゲートウェイのアドレスが残ってしまいます。 WindowsXPで実行するとデフォルトゲートウェイのアドレスは削除されます。 デフォルトゲートウェイの値を削除する方法をお願いいたします。 '----------------------------------- strComputer = "." Set objWMIService = GetObject _ ("winmgmts:\\"" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery(_ "SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = 'True'" For Each objItem in colItems if objItem.EnableDHCP = False then Return = objItem.EnableDHCP end if Next '----------------------------------- 上記に以下を追加してみましたが正常に動作しませんでした。 arrGateways = Array(Null) objItem.SetGateways(arrGateways) 以上、よろしくお願いいたします。

  • 【vba】もしフォルダがなければ作成したい

    Sub test() If Dir("C:\バックアップ\" & Date$) <> "" Then 'ファイルがないなら作成 MkDir "C:\バックアップ\" & Date$ End If End Sub このコードを実行しても ファイルがあってもなくても作成されないのですが 何がおかしいのでしょうか?

  • VBSでファイル作成後、書き込みできない

    ファイルが存在している場合は、ファイルをオープンして書き込み、ファイルが存在していない場合は、ファイルを作成後、オープンして書き込みを行わせたいと考えています。 しかし、ファイルが存在していないとき、ファイルは作成されるのですが、『エラー:800A0046 書き込みできません。VBScript実行時エラー』が出て、書き込みができません。モードをWritingにしても同じでした。 お手数をおかけしますが、ご教示いただけますようお願いいたします。 Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile '■ 定数の宣言 Const strFileName = "C:\VBS\TEST.TXT" '■ 定数の宣言 '// ファイル入出力モード(8:追加書き込み) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else WScript.Echo "ファイルが見つかりませんでした" Set objFile = objFSO.CreateTextFile(strFileName) If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName,ForAppending) objFile.WriteLine "2012/12/21,100,ブレーキパッド,35000"

  • コンストラクタにパスを記述する方法を教えて下さい

    以下に示したプログラムのコンストラクタの引数の部分(File objFile)にディレクトリパスである C:\Users\NEC-PCuser\ArtNameを記述したいのですがエラーになってしまいます。どのように記述すれば引数にディレクトリパスを指定することができるかご教授お願いいたします。 以下がプログラムになります。 /** * ID3Tag取得プログラム:FileListクラス * 指定ディレクトリ以下のファイル一覧を取得するクラス */ import java.io.File; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Iterator; public class FileList { private ArrayList objMp3FileList = null; private ArrayList objDirList = null; private File objFile_; public FileList(File objFile) { /*public FileList("C:\\Users\\NEC-PCuser\\ArtName") */ objFile_ = objFile; /*↑↑のように記述するとエラーになります。↑↑*/ } public long getFileInfo() throws UnsupportedEncodingException { if(objFile_ == null) { System.out.print("Argment is null.\n"); return -1; // error } String strCurrentPath = objFile_.toString(); if(!objFile_.isDirectory()) { System.out.print("This Path is not Directry. :" + strCurrentPath + "\n"); return -1; } objMp3FileList = new ArrayList(); objDirList = new ArrayList(); for(int i = 0; objFile_.listFiles().length > i; i++) { if(objFile_.listFiles()[i].isDirectory()) { FileList objFileList = new FileList(objFile_.listFiles()[i]); objFileList.getFileInfo(); objDirList.add(objFileList); } else if(objFile_.listFiles()[i].isFile()) { MP3File objMP3File = new MP3File(objFile_.listFiles()[i]); objMP3File.getMP3Info(); objMp3FileList.add(objMP3File); } } return 0; } public Iterator getMP3FileIte() { return objMp3FileList.iterator(); } public Iterator getDirIte() { return objDirList.iterator(); } public String getDir() { return objFile_.getPath(); } }

    • ベストアンサー
    • Java

専門家に質問してみよう