Я не могу удалить файл на рабочем столе (все пользователи), но я могу удалить без сценария - PullRequest
1 голос
/ 20 мая 2011

Вылетает на wshShell.Run.

Вы видите, что я запускаю WScript.Echo, и он печатает расположение имени файла. Когда я запускаю его, он говорит: «Системе не удалось найти указанный файл»

Я попробовал objFile.delete, но там говорится, что в доступе отказано. Если я выполняю «del» в командной строке, это работает.

For Each objFile In colFiles
   bMatch = objRE.Test(objFile.Name)
   If bMatch Then
      WScript.Echo objFile.Name
      WScript.Echo objFile.Path
        Set wshShell = WScript.CreateObject ("WSCript.shell")
        wshShell.Run "del " & objFile.Path, 1, True     
        Set wshShell = Nothing

   End If
Next

выход

Lotus Notes 8.5.lnk
C:\Users\Public\Desktop\Lotus Notes 8.5.lnk
(null) (79, 3) : (null)

------------------ ОБНОВЛЕНИЕ ------------------ Следующее работает отлично, если оно находится на рабочем столе пользователя (не AllUsersDesktop). Я пытаюсь удалить его из AllUsersDesktop

For Each objFile In colFiles
   bMatch = objRE.Test(objFile.Name)
   If bMatch Then
     objFile.Delete

   End If
Next

После применения следующего кода я получаю эту ошибку

Lotus Notes 8.5.lnk
C:\Users\Public\Desktop\Lotus Notes 8.5.lnk
(null) (81, 3) : (null)

Код: (обновлено с 5/23)

Set objShell = CreateObject("WScript.Shell")
strCurrentDirectory = objShell.SpecialFolders("AllUsersDesktop")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strCurrentDirectory)
Set objFolderItem = objFolder.Self

Set objFolder = objFS.GetFolder(strCurrentDirectory)
Set colFiles = objFolder.Files

Set objRE = New RegExp
objRE.Global     = True
objRE.IgnoreCase = True
objRE.Pattern    = "notes"

For Each objFile In colFiles
   bMatch = objRE.Test(objFile.Name)
   If bMatch Then
      WScript.Echo objFile.Name
      WScript.Echo objFile.Path
        Set wshShell = WScript.CreateObject ("WSCript.shell")
        wshShell.Run "del """ & objFile.Path & """", 1, True  
        Set wshShell = Nothing

   End If
Next

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Это должно сделать это:

wshShell.Run "del """ & objFile.Path & """", 1, True  
1 голос
/ 20 мая 2011

В пути есть пробел, поэтому он должен быть заключен в двойные кавычки, что-то вроде "del \"" & objFile.Path & "\"" или любой другой синтаксис VB для экранирования.

...