Centrum skryptów - Microsoft office

Jak mogę wypisać wszystkie pliki baz danych programu Access na danym komputerze?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak mogę wypisać wszystkie pliki baz danych programu Access na danym komputerze?

Cześć Skrypciarze! Pytanie

Cześć Skrypciarze! Jak mogę wypisać wszystkie pliki baz danych programu Access (pliki mdb i ldb) na danym komputerze?

-- MG

Cześć Skrypciarze! Odpowiedź

Hej, MG. Wiecie, że w dzisiejszych czasach większość ludzi nie wierzy w Świętego Mikołaja? No cóż, przez przypadek wiemy, że nie mają oni racji: Święty Mikołaj naprawdę istnieje. Skąd to wiemy? Ponieważ przez kilka ostatnich dni wysyłał spam do Skrypciarza, który pisze tę rubrykę.

To prawda: przez ostatnie 24 godziny Skrypciarz, który pisze tę rubrykę dostał przynajmniej 50 wiadomości od Mikołaja. (A może od jego elfów - wiadomości przychodziły z różnych adresów e-mail). Każdy z tych e-maili odsyłał go do witryny, na której mógł zarejestrować imię swojego dziecka - dzięki czemu brzdąc (który, skądinąd, ma 180 cm wzrostu i waży 80 kg) może dostać list od Mikołaja. Co, szczerze mówiąc, wydaje nam się troszkę dziwne. W końcu, zgodnie z tradycją to dzieci pisały listy do Mikołaja - żaden dzieciak, którego znamy nie spodziewa się listu od Mikołaja.

Oczywiście nasuwa się logiczne przypuszczenie, że Święty potrzebuje tych danych do innych celów. Ale to też nie ma żadnego sensu. W końcu Mikołaj wie kiedy śpisz, a kiedy nie - wie nawet czy byłeś dobry, czy zły. (Więc zachowujcie się dobrze na miłość boską!) Po co Mikołajowi nasze adresy e-mail i numery telefonów? Po co mu numery kart kredytowych? A już na pewno Mikołaj nie będzie miał pożytku z naszych numerów ubezpieczenia socjalnego. Będzie miał?

Gdybyśmy nie wiedzieli lepiej, to moglibyśmy odnieść wrażenie, że ktoś próbuje użyć Internetu do wywinięcia jakiegoś szwindlu niewinnym ludziom. Ale to zbyt daleko idące wnioski - z pewnością nikt by nawet nie pomyślał o wykorzystaniu Internetu do niecnych celów.

Ojej! Następny. Przepraszam, Mikołaju - ale to o jeden e-mail za wiele. W tym roku nie będzie dla ciebie ciasteczek i mleka. Nadal jednak dostaniesz (i wszyscy inni też) skrypt, który zlokalizuje wszystkie pliki baz danych Microsoft Access na danym komputerze:

strComputer = "."



Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")



Set colFiles = objWMIService.ExecQuery _

    ("Select * from CIM_DataFile Where Extension = 'mdb' OR Extension = 'ldb'")



For Each objFile in colFiles

    Wscript.Echo objFile.Name

Next

Zgodnie z duchem świąt, jest to "tradycyjny" skrypt do wyszukiwania plików baz danych programu Access - za chwilę przedstawimy inne podejście. Jak na razie możecie zobaczyć, że to dość prosty sposób. Jak widzicie, zaczynamy od połączenia się z usługą WMI lokalnego komputera. Równie łatwo moglibyśmy wykonać ten skrypt na komputerze zdalnym: jedyne co trzeba zrobić, to przypisać nazwę komputera zdalnego do zmiennej strComputer. Następnie wywołujemy kwerendę, która zwraca kolekcję wszystkich plików (tzn wszystkie egzemplarze klasy CIM_DataFile), których właściwość Extension ma wartość mdb lub ldb:

Set colFiles = objWMIService.ExecQuery _ 

("Select * from CIM_DataFile Where Extension = 'mdb' OR Extension = 'ldb'")

Zanim zaczniecie pytać - nie, to nie pomyłka: dla WMI kropka nie jest częścią rozszerzenia pliku. Dlatego użyliśmy wartości mdb a nie .mdb.

Kwerenda zwraca kolekcję wszystkich plików MDB i LDB na komputerze. Teraz wystarczy stworzyć pętlę For Each, aby wypisać wszystkie właściwości Name plików należących do kolekcji:

c:\scripts\restored_files.mdb\test.mdb

c:\scripts\test.mdb

c:\windows\shellnew\access9.mdb

c:\windows\system32\ias\dnary.mdb

c:\windows\system32\ias\ias.mdb

Ho, ho, ho, co?

Teraz skrypt jest już gotowy do działania. Jeśli ma jakieś wady, to głównie taką, że - w zależności od pojemności dysków - wykonanie skryptu może zabrać minutę czy dwie (a nawet więcej). Pamiętając o tym, spójrzmy na alternatywne rozwiązanie - które zabierze jedynie sekundę lub dwie. Jest tu jakiś haczyk? Jasne, że jest - właściwie to nawet kilka haczyków. Najpierw jednak spójrzmy na kod:

On Error Resume Next



Set objConnection = CreateObject("ADODB.Connection")

Set objRecordSet = CreateObject("ADODB.Recordset")



objConnection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"



objRecordSet.Open "SELECT System.ItemPathDisplay FROM SYSTEMINDEX WHERE System.FileExtension = '.mdb'" & _

    " OR System.FileExtension = '.ldb'", objConnection



objRecordSet.MoveFirst



Do Until objRecordset.EOF

    Wscript.Echo objRecordset.Fields.Item("System.ItemPathDisplay")

    objRecordset.MoveNext

Loop

Dlaczego ten skrypt jest o tyle szybszy od poprzedniego? To proste: wykorzystuje technologię przeszukiwania pulpitu Windows Desktop Search 3.0. Dlaczego więc nie pokazaliśmy tego skryptu od razu? To też proste: jak się okazuje, jeśli nie masz systemu Windows Vista, nie masz również technologii Desktop Search 3.0 - musisz ją pobrać i zainstalować. (I o ile nie masz systemu Windows XP z dodatkiem Service Pack 2 lub Windows Server 2003 to nie możesz nawet tego - technologia Desktop Search nie jest dostępna na innych wersjach Windows, przynajmniej nie w tej chwili.) Do tego wszystkiego, ten skrypt można uruchomić tylko na komputerze lokalnym - aby poszukać plików na komputerach zdalnych trzeba użyć WMI.

Mimo tego, technologia Desktop Search 3.0 jest bardzo szybko i bardzo fajna: wyobraźcie sobie, że możecie szukać wiadomości e-mail lub wiadomości błyskawicznych w całym komputerze - tak jak plików. I wyobraźcie sobie możliwość szukania plików nie tylko po nazwie, czy rozszerzeniu, ale także po tytule, słowach kluczowych, artyście, rozdzielczości pionowej lub poziomej, itd. Musicie nam zaufać, to nie tylko wydaje się być przydatne, to jest przydatne. I - jako specjalny prezent świąteczny - Skrypciarze opublikowali artykuł wyjaśniający, jak zacząć używać technologii Desktop Search 3.0 w systemowych skryptach administracyjnych.

Przynajmniej tyle mogliśmy zrobić.

W każdym razie, to ostatnie wydanie Cześć Skrypciarze! w 2006 roku - wrócimy z całkowicie nową rubryką 2 stycznia. Wesołych Świąt i do zobaczenia za dwa tygodnie.

A, i gdybyście spotkali Mikołaja, moglibyście przekazać mu nasz numer ubezpieczenia: 000-11-2222? Nadal nie wiemy do czego mu to potrzebne, no ale to w końcu Mikołaj i nie możemy sobie pozwolić, żeby się na nas gniewał.

 Do początku strony Do początku strony

 Centrum skryptów - Microsoft office