Centrum skryptów - Systemy operacyjne

Jak utworzyć pliki .WAV w folderze?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

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 utworzyć pliki .WAV w folderze?

Cześć, Skrypciarze! Dla celów testowych muszę utworzyć w folderze kilka pustych plików .WAV. Jak napisać skrypt, który utworzy te pliki za mnie?

-- ZL

Cześć, ZL! To był dla mnie dzień pełen wrażeń – zacząłem pracować z domu, zupełnie tak jak Skrypciarka Jean Ross robi to od jakiegoś czasu (znaczy się: nie wiem, czy pracuje, za to nie ręczę, a nie chcę wprowadzać czytelnika w błąd). Z uwagi na to, że Skrypciarze mają (jako eksperci oczywiście) prowadzić stoisko na konferencji TechEd IT Forum (stoisko 22; zapraszamy, jak zawsze można wygrać drogocenną lalkę Doktora Scripto), wyposażono ich w komórki, by organizatorzy mogli zadzwonić do skrypciarskiej ekipy o każdej porze dnia czy nocy.

Oczywiście, żadna ze skrypciarskich komórek nie działa w Europie…

Mniejsza z tym. Na pewno jesteście o wiele bardziej ciekawi, jak się pracuje z domu. No więc… wstaje się zdecydowanie później, je się śniadanie, czyta gazetę, loguje do sieci, narzeka, jak wszystko wolno się ładuje, czyta się wiadomości email, potem oczywiście przerwa na lunch. Po lunchu oczywiście trudno się skupić, planuje się więc krótszy dzień pracy i wyjście na siłownię czy fitness, no a potem już tylko mecz w telewizji… Wnioski? Praca w domu niczym nie różni się od biurowej tak na dobrą sprawę.

W przerwie na lunch można oczywiście dla przyjemności napisać jakiś skrypt, na przykład taki, który tworzy w folderze puste pliki .WAV:

Set objFSO = CreateObject("Scripting.FileSystemObject")



For i = 1 to 100

    strFileName = objFSO.GetTempName

    strFileName = Replace(strFileName, ".tmp", ".wav")

    strPath = "C:\Temp\" & strFileName

    objFSO.CreateTextFile(strPath)

Next

Już wyjaśniam wszystko.

Zaczynamy od utworzenia wystąpienia obiektu Scripting.FileSystemObject. Co z nim zrobimy? Zaraz się dowiecie…

Jeszcze chwileczkę… zdejmę obiad z gazu.

Dla zademonstrowania jak działa nasz skrypt, postanowiliśmy zapełnić folder C:\Temp setką pustych plików .WAV. Mając to na względzie, ustawiamy pętlę For Next, która przechodzi od 1. do 100. pliku. Do tego właśnie służy następujący wiersz kodu:

For i = 1 to 100

Przy tworzeniu nowego pliku będziemy musieli podać dokładną ścieżkę pliku, łącznie z nazwą. Pierwszym krokiem w procesie tworzenia nazwy ścieżki pliku będzie użycie metody GetTempName, która utworzy nam losową nazwę tymczasową dla pliku:

strFileName = objFSO.GetTempName

Metoda GetTempName służy tylko do jednego, tj. tworzenia nazw tymczasowych (nazwa „Temp” w GetTempName oznacza, że te nazwy często są używane w przypadku plików tymczasowych.)

Po tym wszystkim GetTempName będzie miała 100 nazw podobnych do następujących:

rad0F25C.tmp

rad2A9FD.tmp

radEA60F.tmp

Wszystkie te pliki, jak zauważyliście zapewne, mają rozszerzenia .TMP. Tu właśnie leży pies pogrzebany, nie chcemy przecież plików o rozszerzeniu .TMP, potrzebujemy plików .WAV.

Na całe szczęście, w naszej pętli For Next umieściliśmy następujący wiersz kodu:

strFileName = Replace(strFileName, ".tmp", ".wav")

Używamy tu funkcji Replace języka VBScript, która zastępuje nam każde wystąpienie wartości ciągu .tmp (który oczywiście odpowiada rozszerzeniu naszych plików) ciągiem o wartości .wav. Powinniśmy otrzymać następujące nazwy plików:

rad0F25C.wav

rad2A9FD.wav

radEA60F.wav

Kiedy mamy już prawidłowe nazwy plików, możemy użyć poniższego wiersza kodu w celu utworzenia dokładnej ścieżki pliku:

strPath = "C:\Temp\" & strFileName

Nic skomplikowanego. Chcemy utworzyć nasze puste pliki .WAV w folderze C:\Temp. Musimy zatem połączyć C:\Temp\ z nazwą pierwszą nazwą pliku wygenerowanego przez GetTempName. Zmienna strPath powinna być równa następującej wartości:

C:\Temp\rad0F25C.wav

Jeżeli to nie wygląda jak prawidłowa nazwa ścieżki, to nie wiemy co tak wygląda.

Teraz musimy już tylko wywołać metodę CreateTextFile (przekazując jej zmienną strPath) i utworzyć tym samym pierwszy z plików .WAV:

objFSO.CreateTextFile(strPath)

Wiemy, co sobie myślicie: chcieliśmy mieć pliki .WAV, a przywołujemy metodę CreateTextFile? Coś tu nie gra…

Już spieszę z wyjaśnieniami. Nie chodziło nam o utworzenie właściwych, prawidłowych plików .WAV; nie tworzymy plików, które potem można odtworzyć w programie Windows Media Player. Tworzymy tu „puste” pliki .WAV, czyli pliki dźwiękowe, których „dźwiękowość” polega jedynie na rozszerzeniu .WAV. Dlatego też użyliśmy metody CreateTextFile – właśnie ta metoda nie zwraca uwagi na to, jakiego rozszerzenia użyjemy. Przecież nawet teksty nie mają zawsze rozszerzenia .TXT. (mogą być plikami .CSV, .XML, .HTM, etc.) Jeżeli więc potrzebujecie jakichś konkretnych typów plików do przetestowania jakiegoś skryptu (na przykład skrypt, który będzie usuwał z folderów tylko pliki .DOC), proszę bardzo, nadajcie CreateTextFile nazwę pliku, która zawiera docelowe rozszerzenie. CreateTextFile pobierze je stamtąd.

Mamy nadzieję, że są to pomocne rady, w końcu ja też jestem przecież ekspertem, nie da się ukryć. Mamy więc nadzieję, że wszyscy co fajniejsi uczestnicy konferencji TechEd IT Forum wpadną się przywitać z ekspertami (przepraszam Ekspertami) na stoisku 22 i spróbują swojego szczęścia w losowaniu jakże cennej lalki Doktora Scripto. Życzymy powodzenia, a ja wracam do prac domowych: posolić, odcedzić, zasmażyć, wymieszać, przyprawić… świat nie jest taki prosty.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne