Przejdź do głównej zawartości

Automatyzacja w Windows przy użyciu plików wsadowych bat. Jak wyszukać wszystkie pliki jpg, mp3 czy dowolnego innego typu i skopiować je do wybranej lokalizacji?

W świecie okienek ekran terminala to raczej niecodzienny widok, chyba że chodzi o putty jakim logujemy się po ssh. W świecie Linux skrypty to codzienność i każdy kto pracuję z systemami Unixowymi doskonale wie jak obskryptować sobie wykonywanie powtarzalnych czynności. Ostatnio przy okazji konieczności naprawienia laptopa przez nową instalację systemu pojawiło się standardowe zadanie. Czyli "mam tam zdjęcia i piosenki, dobrze było by je zachować..." teraz weź szukaj gdzie użytkownik sobie pochował mp-trójki oraz fotki z wakacji skoro o porządek to już on raczej nie dbał i pliki są wszędzie tam gdzie się aktualnie okienko otworzyło. To samo tyczy się dokumentów i exceli. Nie bardzo chciało mi się to ręcznie przenosić, szukać, łazić po katalogach i ctrl+a potem ctrl+x i w końcu ctrl+v. Przeszło mi przez myśl jak to dobrze w Linux napisać sobie krypt, który wyszuka pliki i potem skopiuje je tam gdzie chce. Ale ale przecież w Windows istnieje programowanie wsadowe. Można również użyć specjalnych programów porządkujących pliki tyle, że nie będziemy tu wyciągać działa by strzelać do muchy przecież chodzi tu o prostą operacje typu znajdź pliki o podanym rozszerzeniu i przenieś w jakieś bezpieczne miejsce ot to i tyle do zrobienia. Wystarczyło chwilę pomyśleć i takie zadanie da się zrobić ala-skryptowo w Windows. By wykonać to zadanie utworzymy plik wsadowy, który wykona wyszukanie wszystkich plików o zadanym rozszerzeniu i przeniesie je do wybranego katalogu. 



Krok 1- Tworzymy plik o dowolnej nazwie przy użyciu dowolnego edytora (może być zwykły notatnik albo jak w moim wypadku Notepad++)  i dajemy mu rozszerzenie *.bat. 

Krok 2 - Jako zawartość pliku wpisujemy : 

@echo off

SET /P sciezka="Podaj sciezke do katalogu do ktorego wykonasz kopie plikow np.: C:\test  "

mkdir %sciezka%
mkdir %sciezka%\mp3
mkdir %sciezka%\jpg
mkdir %sciezka%\dokumenty
mkdir %sciezka%\exele


for /r C:\ %%f in (*.mp3) do @copy "%%f" %sciezka%\mp3\ 
for /r C:\ %%f in (*.jpg) do @copy "%%f" %sciezka%\jpg\
for /r C:\ %%f in (*.doc) do @copy "%%f" %sciezka%\dokumenty\
for /r C:\ %%f in (*.xls) do @copy "%%f" %sciezka%\exele\

SETLOCAL
SET ilosc=0
FOR %%f IN (%sciezka%\mp3\*.mp3) DO SET /A ilosc+=1
ECHO. 
ECHO.
ECHO Skopiowano %ilosc% plikow *.mp3
ECHO.
set ilosc=0
FOR %%f IN (%sciezka%\jpg\*.jpg) DO SET /A ilosc+=1
ECHO. 
ECHO.
ECHO Skopiowano %ilosc% plikow *.jpg
ECHO.
set ilosc=0
FOR %%f IN (%sciezka%\dokumenty\*.doc) DO SET /A ilosc+=1
ECHO. 
ECHO.
ECHO Skopiowano %ilosc% plikow *.doc
ECHO.
set ilosc=0
FOR %%f IN (%sciezka%\exele\*.xls) DO SET /A ilosc+=1
ECHO. 
ECHO.
ECHO Skopiowano %ilosc% plikow *.xls

ENDLOCAL


Powyższy kod można oczywiście dostosować według własnych potrzeb i wyszukać inne pliki. 

Jak to działa ? 

Skrypt uruchamiamy klikając na nim dwa razy lub najlepiej z konsoli poleceń. Wywołujemy ją jako CMD z menu "uruchom". Pierwszym krokiem jest podanie lokalizacji do jakiej zostaną skopiowane wyszukane pliki. np.: D:\kopia_zapasowa\. W lokalizacji tej zostaną utworzone katalogi jpg, mp3, dokumenty, excele, do jakich trafią odpowiednie pliki. Na końcu wyświetlone zostaną ilości skopiowanych plików. 






Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości