Co zabija polecenie Kill?
Kill to polecenie, którego działanie trudno pomylić z jakimkolwiek innym. Jeśli chcesz pozbyć się jakiegoś pliku to Kill zadziała bezbłędnie. Warto, abym już na początku uprzedził Cię, że to polecenie nie przeniesie pliku do kosza, tylko sprawi, że plik zupełnie zniknie z dysku.
Jedynym argumentem tego polecenia jest ścieżka wskazująca lokalizację pliku. Jeśli podasz samą nazwę pliku to program spróbuje znaleźć ten plik w domyślnym katalogu. Nazwa pliku powinna zawierać również jego rozszerzenie.
Jeśli nie znajdzie pliku o dokładnie takiej nazwie, to pojawi się komunikat File not found.
Aby sprawdzić, jaki jest domyślny katalog możesz wpisać polecenie Debug.Print CurDir.
Oczywiście nie musisz za każdym razem zmieniać domyślnego katalogu, aby usunąć plik. Wystarczy podać pełną ścieżkę do pliku i w ten sposób rozwiążesz temat lokalizacji.
Kill pozwala również na używanie znaków specjalnych tj. „*” (gwiazdka), która zastępuje dowolny ciąg znaków, oraz „?” (znak zapytania) zastępujący pojedynczy znak.
Dzięki temu możesz usunąć jednocześnie kilka plików, których nazwa spełni kryterium. Np. wszystkie pliki o tym samym rozszerzeniu, albo pliki zawierające w nazwie tę samą frazę.
Usuwanie plików „do odczytu”
Warto wiedzieć, że Kill nie pozwala na usuwanie plików tylko do odczytu. Próba usunięcia takiego pliku zwróci błąd „Path/File access error”.
W takim wypadku przed usunięciem pliku należy go zmodyfikować. Wystarczy użyć polecenia SetAttr z argumentem vbNormal, które zmodyfikuje atrybut pliku. Myślę, że dobrym nawykiem byłoby używanie za każdym razem polecenia SetAttr, przed próbą usunięcia pliku.
Co by tu usunąć?
Spróbujmy zrobić przykład, w którym z katalogu będę chciał usunąć wszystkie pliki o wybranym rozszerzeniu, ponieważ wiem, że w danym katalogu nie powinny się one znajdywać.
Deklaruję zmienną ścieżka, która przechowa ściężkę do folderu, oraz WybierzFolder, która pozwoli na wskazanie folderu przez użytkownika za pomocą okna dialogowego.
Zmienna WybierzFolder musi zostać ustawiona za pomocą funkcji FileDialog (więcej o wyborze folderu z okna dialogowego w artykule FileDialog – Wybór folderu z okna dialogowego)
Wyświetlam okno dialogowe i pobieram adres do zmiennej sciezka.
Dodałem zmienną rozszerzenie, która pozwala użytkownikowi w okienku InputBox wprowadzić tekst, który będzie wykorzystany do wyszukania usuwanych plików.
Pozostaje już tylko wprowadzić polecenie Kill, które w połączeniu ze ścieżką, gwiazdkami i rozszerzeniem wprowadzonym przez użytkownika usunie wszystkie spełniające warunek pliki.
2 thoughts on “Kill – usuwanie plików z dysku”
cześć
a coś w druga stronę? zapisz pliki które zostały usunięte z danego katalogu i kto/kiedy.
Cześć,
Niestety nie wiem, czy istnieje możliwość śledzenia zachowania użytkownika w środowisku Windows za pomocą jakiegokolwiek zdarzenia Excela ;/ Musiałby być event Windows.BeforeDelete ale to tylko moja fantazja 🙂