vbscript читает свойства объекта File, но не удаляет файл

Вот мой (очень простой) код:

if fs.FileExists(strPath) then
    set thisFile=fs.GetFile(strPath)
    wscript.echo thisFile.Name & " (" & thisFile.Size & ") will be deleted" 
    thisFile.Delete
end if

Путь правильный, потому что я могу прочитать имя файла и размер файла в выводе. Тем не менее, это результат, который я получаю:

D:\Inetpub>cscript PDFDelete.vbs

Microsoft (R) Windows Script Host версии 5.8

Авторское право (C) Microsoft Corporation. Все права защищены.

131_1443_cds101711.pdf (28660) будет удален

D:\Inetpub\PDFDelete.vbs(38, 3) Ошибка выполнения Microsoft VBScript: файл не найден

Как видите, я получаю правильный вывод о свойствах файла, поэтому я знаю, что у меня есть действительная ссылка на файловый объект, но попытка выполнить метод Delete() для того же самого файлового объекта приводит к «Файл не найден» ошибка?!

Это не имеет никакого смысла для меня. Как файл может быть «не найден», если я только что получил доступ к его имени и размеру?

EDIT Я должен был упомянуть, что изначально я использовал код «fs.DeleteFile(strPath)», когда впервые получил ошибку «Файл не найден». Я изменил его на более прямой метод "File.Delete()", но ошибка сохраняется.


person JMax2012    schedule 05.12.2013    source источник


Ответы (2)


Можешь попробовать:

if fs.FileExists(strPath) then
  set thisFile=fs.GetFile(strPath)
  wscript.echo thisFile.Name & " (" & thisFile.Size & ") will be deleted" 
  fs.DeleteFile strPath
end if

http://www.devguru.com/technologies/vbscript/14055

person Nathan Rice    schedule 05.12.2013
comment
На самом деле это был мой первый пакет кода, и он выдал ту же ошибку File Not Found, поэтому я переключился на File.Delete - не имело значения - person JMax2012; 05.12.2013

Я нашел проблему.

Дальше в скрипте была случайная строка кода, которая ссылалась на thisFile.Size после попытки удалить этот файл. Ошибка происходила в этой строке, а не в строке thisFile.Delete.

Мораль этой истории: используйте перехват ошибок On Error Resume Next/On Error Goto 0 с самого начала, и все станет намного яснее.

person JMax2012    schedule 05.12.2013
comment
вместо того, чтобы скрывать ошибки атроциусным (глобальным) OERN, вам следует обратить внимание на номер строки в сообщениях об ошибках. - person Ekkehard.Horner; 05.12.2013
comment
Или, может быть, я мог бы просто написать идеальный, безошибочный код с самого начала. Вы знаете, пока мы констатируем чертовски очевидное... все, что я хотел сказать, это то, что использование некоторой базовой обработки ошибок, жестокой или какой-либо другой, помогло мне точно определить проблему. - person JMax2012; 23.01.2014