Centrum skryptów - Systemy operacyjne

Jak usunąć zawartość pliku tekstowego?

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ąć zawartość pliku tekstowego?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak usunąć zawartość pliku tekstowego?

-- JJ

Cześć Skrypciarze! Odpowiedź

Cześć, JJ. Od początku było wiadomo, że to kiedyś nastąpi; Skrypciarze wrócili już z wakacji. Można by się spodziewać, że po czasie spędzonym w luksusowych hotelach, wizytach w ekskluzywnych restauracjach i mnóstwie atrakcji, Skrypciarze będą zachwyceni na samą myśl o powrocie do pracy. Ujmijmy to tak: ktokolwiek tak myśli, jest w błędzie.

Tak naprawdę, pierwsze, co dziś rano zrobił piszący te słowa Skrypciarz, to sprawdzenie w porannej gazecie, czy przypadkiem przez jego nieobecność Microsoft nie przestał istnieć. Nie znalazłszy żadnej informacji o upadku firmy, wcale nie stracił nadziei, przecież może nikt nie uznał za stosowne zamieszczać takiej informacji w gazecie. W końcu zmusił się do pójścia do pracy, gdzie dopadła go myśl straszna: że będzie musiał napisać artykuł do dzisiejszej rubryki Cześć Skrypciarze!

Tak też się stało, ale na szczęście zadane pytanie nie wymagało jakiegoś szczególnie wielkiego nakładu pracy. Piszący te słowa Skrypciarz postanowił zabrać się za pisanie jak najszybciej, żeby jak najszybciej skończyć i mieć więcej czasu na wspominanie swoich wspaniałych, minionych wakacji. Oto skrypt usuwający zawartość pliku tekstowego:

Const ForWriting = 2



Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForWriting)



objFile.Write ""

objFile.Close

Nie musimy chyba dodawać, że nie da się zbyt wiele powiedzieć na temat tego skryptu. Zaczynamy od zdefiniowania stałej o nazwie ForWriting i nadania jej wartości 2; wykorzystamy tę stałą w celu otwarcia pliku w trybie „do zapisu”. (Tak, koniecznie musimy otworzyć plik i dokonać w nim zapisu; a dzieje się tak dlatego, że nie ma polecenia, które bezpośrednio usuwa zawartość pliku.) Następnie stosujemy poniższe dwa wiersze kodu w celu utworzenia wystąpienia obiektu Scripting.FileSystemObject i otwarcia pliku C:\Scripts\Test.txt do zapisu:

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForWriting)

Jak wspominaliśmy, nie ma polecenia (np. objFile.Erase) które moglibyśmy wywołać w celu usunięcia zawartości pliku tekstowego. Ale to już nie jest problem. Bo czymże jest wyczyszczony plik? W zależności od tego, jak na to spojrzymy jest to po prostu pusty plik, plik (jak np. C:\Scripts\Test.txt), który istnieje, ale nie ma żadnej zawartości. Podążając za tą definicją, oznacza to, że możemy właściwie wymazać zawartość pliku zastępując ją, no cóż, niczym. Zrobimy to za pomocą tego wiersza kodu:

objFile.Write ""

Kiedy otworzymy plik do zapisu, to co w nim zapiszemy zastąpi zawartość znajdującą się obecnie w pliku. To bardzo prosta koncepcja. W dodatku, „” to sposób skryptu VBScript na powiedzenie „nic”; „” reprezentuje ciąg o długości zero. Dlatego też za pomocą tego pojedynczego wiersza kodu zastępujemy istniejącą zawartość pliku Test.txt niczym. No i mamy, co chcieliśmy: pusty plik.

Nie, to nie działa, już próbowaliśmy: nie da się za pomocą skryptu wymazać wszystkich dni tygodnia oprócz piątku i weekendu. Niestety.

Nawiasem mówiąc, jeżeli planujecie tylko ponownie w kółko używać tego samego pliku (czyli przy każdym uruchomieniu skryptu), nie musimy koniecznie usuwać zawartości pliku; samo otworzenie pliku do zapisu i wpisanie nowych danych usuwa starą zawartość i robi miejsce dla nowej. A jeżeli naprawdę chcemy usunąć zawartość pliku lub zbioru plików, cóż, teraz już wiemy jak to zrobić.

Jeżeli chodzi o Skrypciarzy, zabawa się skończyła; czas wracać do codziennych zajęć. Które, jak się nad tym zastanowić, zazwyczaj obejmują bezczynne siedzenie przy biurku urozmaicone wypadami na lunch. No dobra, może powrót do takiej pracy to jeszcze nie jest katastrofa. Są tacy, którzy muszą w pracy PRACOWAĆ.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne