Zabawy z plikami
Linia 1 to definicja stałej DESKTOP. Jej wartość będzie później potrzebna do tego, by skrypt uwzględniał tylko pliki znajdujące się w folderze Pulpit danego użytkownika. Jeżeli jednak z pewnych względów chciałbyś dysponować skryptem przenoszącym pliki z pulpitu wszystkich użytkowników, zastąp linię pierwszą następującym zapisem:
Const ALL_USERS_DESKTOP = &H19&
Linia 3 to utworzenie obiektu Shell.Application, a następnie – w liniach od 5 do 7 – skrypt łączy się z pulpitem, pobiera ścieżkę do niego, która zostaje przypisana zmiennej
strPath.
Linie od 11 do 16 powinny wyglądać znajomo. Istotnie, wykorzystano w tym przypadku – podobnie jak w poprzednio opisywanym skrypcie – usługę WMI i kwerendę ASSOCIATORS OF do utworzenia kolekcji plików znajdujących się na pulpicie.
Co dalej? Czas na wystąpienie obiektu Scripting.FileSystemObject (linia 17) i ustawienie pętli For Each (linie od 19 do 29), która „przeszuka” całą kolekcję plików zwróconą kwerendą usługi WMI, a następnie przeniesie znalezione pliki do odpowiednich folderów.
W pierwszym wierszu wewnątrz pętli budowana jest ścieżka do foldera docelowego dla przenoszonych plików. Zgodnie z wcześniejszymi założeniami nazwa foldera ma być taka jak rozszerzenie plików (bez kropki), jakie do tego foldera mają być przeniesione. Stąd też zwrot – w linii 20 – objFile.Extension.
Wewnątrz pętli For Each znajduje się konstrukcja warunkowa If Then Else. Po co? Otóż najpierw (linie 21 – 23) przebiega sprawdzenie, czy istnieje docelowy folder dla plików o określonym rozszerzeniu i jeżeli tak, następuje przeniesienie do niego odpowiednich plików.
Kolejne linie – od 24 do 27 – są przydatne w sytuacji, gdy folder nie istnieje. Wtedy w pierwszej kolejności jest on tworzony, a następnie są do niego przenoszone pliki.
Z pewnością zauważysz podobieństwa i różnice w kodzie obu skryptów. Spróbuj tak zmodyfikować pierwszy ze skryptów, by pliki o nazwach zawierających rok były przenoszone do automatycznie tworzonych nowych folderów. Mechanizm automatycznego tworzenia folderów (o nazwach odpowiadających rozszerzeniu plików) wyjaśniliśmy w drugim skrypcie. Nic nie stoi też na przeszkodzie, by rozbudować skrypt o działanie na kilku folderach jednocześnie.