2013-08-06 3 views
0

Я очень новичок в VBScript, и я пытаюсь написать простой скрипт, который будет извлекать файл в каталог в новый каталог. До сих пор это то, что у меня есть (и это хорошо работает):Поиск C Драйв для файла с VBScript

'USER VAR REPRESENTS WINDOWS USERNAME 
Set oShell = CreateObject("WScript.Shell") 
user=oShell.ExpandEnvironmentStrings("%UserName%") 

'FOLDER TO BE EXTRACTED 
ZipFile="C:\Users\"&user&"\Downloads\Test.zip" 

'LOCATION TO EXTRACT FILES 
ExtractTo="C:\Users\"&user&"\desktop" 

'EXTRACT ZIP FILE 
Set objShell = CreateObject("Shell.Application") 
Set FilesInZip=objShell.NameSpace(ZipFile).items 
objShell.NameSpace(ExtractTo).CopyHere(FilesInZip) 

Set fso = Nothing 
Set objShell = Nothing 
Set oShell = Nothing 

Теперь, если это возможно, если папка «Рабочий стол» не может быть найден, или файл «Test.zip» не может быть найден, я бы например, искать C-Drive для них, а затем продолжить извлечение и т. д. Я видел несколько примеров, но я не могу понять, как их реплицировать. Как я могу искать весь диск C и подпапки для этих файлов?

Помощь была бы оценена, спасибо заранее!

ответ

1

В общем рекурсивном поиск может быть сделан, как это:

Function SearchFolder(fldr, name) 
    Set SearchFolder = Nothing 
    For Each f In fldr.Files 
    If LCase(f.Name) = LCase(name) Then 
     Set SearchFolder = f 
     Exit Function 
    End If 
    Next 

    For Each sf In fldr.SubFolders 
    Set result = SearchFolder(sf, name) 
    If Not result Is Nothing Then 
     Set SearchFolder = result 
     Exit Function 
    End If 
    Next 
End Function 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = SearchFolder(fso.GetFolder("C:\"), "Test.zip") 

Однако поиск всего диска, путь займет некоторое время. Также есть несколько папок, к которым у пользователей нет доступа, поэтому вам придется учитывать это, если вы хотите реализовать такой поиск.

+0

Хорошо, это правда, спасибо. В принципе, (и это не входит в мой код), я бы хотел найти подпапку itunes, которая будет находиться в разных местах на разных компьютерах. Любые идеи о том, как я мог это сделать, не пройдя весь диск c? Например, на моем компьютере вы должны пойти в музыку> iTunes> (вложенная папка). На других компьютерах это может быть в документах или где-то еще (и я не говорю о папке iTunes с файлами программы, это совсем другое) – kshah

+0

Вы имеете в виду библиотеку, я знаю. Папка командной оболочки 'My Music' - это местоположение по умолчанию для нее, которое может быть прочитано в реестре (« HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Папки пользовательской оболочки \ Моя музыка »). Я не использую iTunes в Windows, поэтому я не знаю, можно ли выбрать другое местоположение без изменения этого значения и где будет храниться другое местоположение. –

Смежные вопросы