不要な一時ファイルを削除するスクリプトを作成しようとしています。ただし、特に .tmp をターゲットにしたいと考えています。少なくとも今のところ。そのため、FOR EACH ステートメントを使用して C:\Users\\AppData\Local\Temp 内のすべての .tmp を削除できるコレクションを返す WQL クエリを作成しようとしています。最近 VBScript の学習を始めたばかりです。しかし、私は C/C++ でプログラムを書いた経験があります (主に「数学的な」プログラム)。
Cscript はクエリ自体に問題はないようです。しかし、結果のコレクションで Count メソッドを使用しようとすると、cscript はエラーを返します: (17,1) Microsoft VBVScript ランタイム エラー: オブジェクトはこのプロパティまたはメソッドをサポートしていません: 'colTempFiles.Count'.
何らかの理由でコレクションが返されないのではないかと考えて、WQL について少し調べました。しかし、クエリに問題があるようには見えません。FileSystemObject から選択するべきではないのではないかと考えています。しかし、私はそれについて見つけることができるものを読みました.それは正しいことのようです (ただし、MSDN には実際には多くの役立つ情報はありません)。
とにかく、これが私が現在持っているスクリプトです。コメントはありません。2 行目は、現在は使用していませんが、後で使用する予定です。これにより、変数をローカル コンピューターのユーザー名として定義でき、ローカルの一時フォルダーのパスを具体的に指す必要がなくなります。どんな助けでも大歓迎です:
strComputer = "."
strUser="adam"
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTempFiles = objWMIService.ExecQuery _
("SELECT * FROM FileSystemObject WHERE Name = '*.tmp' AND "_
& "NOT Name LIKE 'Prf%' AND Path LIKE 'C:\Users\adam\AppData\Local\Temp\%'")
colTempFiles.Count
For Each objFile in colTempFiles
Wscript.Echo objFile.Name
'Set objF=objFSO.GetFile("objFile.Path")
'objF.Delete(True)
Next