Я пытаюсь написать скрипт для удаления ненужных временных файлов. Однако я хочу специально настроить таргетинг на .tmp. По крайней мере на данный момент. Итак, я пытаюсь написать запрос WQL, чтобы вернуть коллекцию, с которой я могу использовать оператор FOR EACH для удаления всех .tmp в C:\Users\\AppData\Local\Temp. Я только недавно начал изучать VBScript. Но у меня есть опыт написания программ на C/C++ (в основном "математических" программ).
У Cscript, похоже, нет проблем с самим запросом. Но когда я пытаюсь использовать метод Count для результирующей коллекции, cscript возвращает ошибку: (17,1) Ошибка времени выполнения Microsoft VBVScript: объект не поддерживает это свойство или метод: «colTempFiles.Count».
Я немного прочитал о WQL, думая, что, возможно, по какой-то причине мне не вернули коллекцию. Но я не могу найти ничего плохого в запросе. Я думаю, что, возможно, мне не следует выбирать из FileSystemObject. Но я прочитал все, что смог найти об этом, и мне кажется, что это правильно (хотя на самом деле в MSDN не так много полезной информации).
Во всяком случае, вот сценарий, который у меня сейчас есть, без комментариев. Вторая строка — это то, что я сейчас не использую, но собираюсь попробовать использовать позже, чтобы я мог определить переменную как имя пользователя локального компьютера и не указывать конкретно путь к локальной папке Temp. Любая помощь будет принята с благодарностью:
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