Centrum skryptów - Systemy operacyjne

Jak usunąć wszystkie pliki .CSG z napędu C?

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 usunąć wszystkie pliki .CSG z napędu C?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak usunąć wszystkie pliki .CSG z napędu C?

-- DL

Cześć Skrypciarze! Odpowiedź

Cześć, DL. Zabawne, jak szybko się wszystko zmienia. Jeszcze parę godzin temu Skrypciarz piszący te słowa miał taki zły humor, że wcale nie miał zamiaru odpowiadać na Twoje czy czyjekolwiek pytanie o usuwanie plików .csg z napędu C. Cóż sprawiło, że radosny na co dzień Skrypciarz stał się takim mrukiem?

Jego wieczór zaczynał się nienajgorzej: nie ma nic lepszego, niż wyprawa ze Skrypciarskim Synem na mecz koszykówki, w którym grają Waszyngtońskie Husky przeciwko Oregon Ducks.

W połowie meczu Husky mieli 11-punktową przewagę nad Kaczkami, ale po paru minutach błyskawicznie ją stracili. To była tragedia. Ponieważ wcześniej Skrypciarza spotkały inne nieszczęścia – np. zamknięto jego ulubiony bar kanapkowy – postanowił, że jedyne co mu zostanie w wypadku przegranej Huskych, to przeprowadzka na bezludną wyspę.

Na całe szczęście Husky wzięli się w garść i spuścili Kaczkom manto, wygrywając 89-77. W związku z tym Skrypciarz piszący te słowa odwołał rezerwację biletu na bezludną wyspę, a potem przysiadł fałdów i napisał skrypt mogący usunąć wszystkie pliki .csg z napędu C:.

strComputer = "."



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



Set colFiles = objWMIService.ExecQuery _

    ("Select * from CIM_DataFile Where Drive = 'C:' and Extension = 'csg'")



For Each objFile in colFiles

    objFile.Delete

Next

Jak widać, skrypt nie jest specjalnie trudny. Na początku łączymy się z usługą WMI na komputerze lokalnym. Czy można użyć tego samego skryptu, by usunąć pliki .csg z komputera zdalnego? Jasne, że tak; wystarczy przypisać nazwę komputera zdalnego zmiennej strComputer w taki sposób:

strComputer = "atl-fs-01"

Po połączeniu z WMI uruchamiamy następującą kwerendę, która zwróci nam kolekcję wszystkich plików .csg, jakie znajdują się na dysku C:

Set colFiles = objWMIService.ExecQuery _

    ("Select * from CIM_DataFile Where Drive = 'C:' and Extension = 'csg'")

Podobnie jak w wypadku większości kwerend WMI, sekretem jest tu klauzula Where. Nie chcemy przecież, aby nasza kolekcja objęła całą zawartość napędu C; chcemy znaleźć i usunąć jedynie takie pliki, które spełniają dwa warunki:

  • znajdują się na dysku C,
  • mają rozszerzenie .csg.

Dlatego też nasza klauzula Where wygląda tak: Where Drive = 'C:' and Extension = 'csg'. Zwróćmy uwagę na dwie rzeczy. Po pierwsze, dwukropek jest częścią oznaczenia napędu – jest to dysk C:, a nie C. Po drugie, według WMI kropka nie należy do rozszerzenia. Dlatego poszukujemy rozszerzenia csg, a nie .csg.

Co robimy teraz, kiedy mamy już kolekcję plików stworzoną przez kwerendę? To proste: uruchamiamy pętlę For Each, która przejdzie przez całą kolekcję; wewnątrz pętli umieszczamy metodę Delete, która usuwa wszystkie pliki jeden po drugim. Służy do tego poniższy fragment kodu:

For Each objFile in colFiles

    objFile.Delete

Next

Może to zaskakujące, ale to już koniec. Skrypt jest króciutki, ale niezawodnie usuwa wszystkie pliki .csg z napędu C (i tylko z niego).

Tymczasem Skrypciarz piszący te słowa chciałby poruszyć jeszcze jedną kwestię. Ktoś może się zastanawiać, czy przegrana Huskych – jeśli wziąć pod uwagę, że w tym sezonie niektórzy zawodnicy zostali kontuzjowani, a inni są niedoświadczeni – byłaby aż taką tragedią? W końcu Kaczki zajmują siódme miejsce w rankingu ogólnokrajowym.

Ujmijmy to tak: Załóżmy, że na Ziemi lądują Marsjanie i wyzywają ją na mecz koszykówki. Jeśli Ziemia wygra, Marsjanie odlecą i będziemy uratowani. Jeśli Ziemia przegra, Marsjanie zniszczą całą planetę.

Załóżmy jeszcze, że na reprezentantów Ziemi wybrane zostaną Kaczki. Jak myślicie, za kim w takiej sytuacji byliby Skrypciarze?

No cóż: zniszczenie Ziemi nie jest wygórowaną ceną za widok przegranej Oregonu.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne