Folder
является объектом C:\Users
папки; objDesktopFolder
- это объект папки для каждой папки непосредственно в C:\Users
, например. C: \ Users \ user1 - не дополнительные уровни подпапок, например. C: \ Users \ user1 \ Desktop (так что это вводящее в заблуждение имя, так как это не папка рабочего стола).
Если вы хотите, чтобы смотреть прямо на рабочем столе, то просто измените эту строку (и любую другую линию, которая использует этот путь): If FSO.FileExists(Folder & "\sample1.lnk") Then
к: If FSO.FileExists(FSO.BuildPath(objDesktopFolder.Path, "Desktop\sample1.lnk")) Then
Если вы также хотите просмотрите каждую папку, которая может существовать на рабочем столе, тогда вам придется выполнять такую же логику, например
Option Explicit
Dim Shell, FSO, DesktopPath
Dim objShortcutFile, objDesktopFolder, objDesktopSubFolder, Folder, strSysDrive
Dim filepath, userfolder, desktop, subfolder, filename
Set Shell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
strSysDrive = Shell.ExpandEnvironmentStrings("%SystemDrive%")
Set Folder = FSO.GetFolder(strSysDrive & "\Users")
msgbox Folder & "\sample1.lnk"
filename = "sample1.lnk"
For Each userfolder in Folder.SubFolders
desktop = FSO.BuildPath(userfolder.Path, "Desktop")
filepath = FSO.BuildPath(desktop, filename)
If FSO.FolderExists(desktop) Then
' Delete file on desktop
If FSO.FileExists(filepath) Then
FSO.DeleteFile filepath, True
MsgBox "Success: deleted " & filepath
Else
MsgBox filepath & " doesn't exist"
End If
' Check folders on desktop
For Each subfolder In FSO.GetFolder(desktop).SubFolders
filepath = FSO.BuildPath(subfolder.Path, filename)
If FSO.FileExists(filepath) Then
FSO.DeleteFile filepath, True
MsgBox "Success: deleted " & filepath
End If
Next
End If
Next
Это будет выглядеть только для файлов в папках непосредственно на рабочем столе (а также файл на рабочем столе, конечно). Если вы хотите просмотреть дополнительные уровни подпапок, тогда лучше всего создать отдельный подраздел, который использует рекурсию для прохождения всех уровней подпапок.
И каков ваш вопрос? – Bond
Сценарий не выполняет свою работу, если я не скопировал файл в «C: \ users». Мне нужно несколько примеров того, как это сделать, я думал, могу ли я использовать wmi для поиска в любой подпапке \ DESKTOP в каталоге c: \ users *. * (= All users). – xka
Используйте 'objDesktopFolder.Path &" \ sample1.lnk "' вместо 'Folder &" \ sample1.lnk "' в 'Для каждого цикла objDesktopFolder .. Next' – JosefZ