#vbscript
Вопрос:
Я пришел из мира PowerShell, так что не бейте меня слишком сильно. Я пытаюсь перечислить имена, размеры и дату, созданные для файлов в папке, переданной сценарию, но я продолжаю получать сообщение об ошибке «Требуется объект«. Я попытался погуглить и использовать функцию поиска здесь, но я просто недостаточно знаком, чтобы понять это.
В моей голове это должно сработать:
Dim fso, Arg, FolderPath, Exists Dim Folder, colFiles, objFile Set fso = CreateObject("Scripting.FileSystemObject") Set Arg = WScript.Arguments Set FolderPath = Arg(0) If Arg.Count gt; 0 Then WScript.Echo FolderPath Exists = fso.FolderExists(FolderPath) if Exists Then Set Folder= fso.GetFolder(FolderPath) Wscript.Echo Folder.Path Set colFiles = Folder.Files For Each objFile in colFiles Wscript.Echo objFile.Name Next Wscript.Echo ShowSubfolders fso.GetFolder(FolderPath) Sub ShowSubFolders(Folder) For Each Subfolder in Folder.SubFolders Wscript.Echo Subfolder.Path Set Folder = fso.GetFolder(Subfolder.Path) Set colFiles = Folder.Files For Each objFile in colFiles Wscript.Echo objFile.Name Next Wscript.Echo ShowSubFolders Subfolder Next End Sub else Wscript.Echo "Folder Doesn't Exist" end if end if
Он проверяет, передан ли аргумент, а если нет, повторяет, что ничего не было передано. Если есть, проверьте, является ли пройденный путь хорошим путем, и попробуйте перечислить файлы. Может ли кто-нибудь указать мне правильное направление здесь? Я все еще не включил свойство создания размера и даты, так как хотел сначала выполнить эту часть, прежде чем приступать к этому.
К сожалению, на YouTube не так много видеороликов, объясняющих правильные конструкции If.
Комментарии:
1. Путь к папке-это строка, она не нужна
set
.FolderPath = Arg(0)
2. @Хлопья, оооо, я не знал об этом! Извините, мой первый день, когда я пытаюсь писать VBScripts. Есть какая-нибудь причина, по которой он мог бы бросить его в мой блок «Еще»?
Ответ №1:
Попробуй это сделать:
Dim fso, Arg, FolderPath, Exists Dim Folder, colFiles, objFile Set fso = CreateObject("Scripting.FileSystemObject") Set Arg = WScript.Arguments FolderPath = Arg(0) If Arg.Count gt; 0 Then If fso.FolderExists(FolderPath) Then Set Folder= fso.GetFolder(FolderPath) Wscript.Echo Folder.Path Set colFiles = Folder.Files For Each objFile in colFiles Wscript.Echo objFile.Name amp; " " amp; objFile.Size amp; " " amp; objFile.DateLastModified Next Wscript.Echo ShowSubfolders fso.GetFolder(FolderPath) Else Wscript.Echo "Folder: " amp; folderpath amp; " doesn't exist" End If End If Sub ShowSubFolders(Folder) For Each Subfolder in Folder.SubFolders Wscript.Echo Subfolder.Path Set Folder = fso.GetFolder(Subfolder.Path) Set colFiles = Folder.Files For Each objFile in colFiles Wscript.Echo objFile.Name amp; " " amp; objFile.Size amp; " " amp; objFile.DateLastModified Next Wscript.Echo ShowSubFolders Subfolder Next End Sub