Archive for June, 2010

CMD - automatyzacja tworzenia katalogów

Saturday, June 12th, 2010

Pewne czynności porządkowe na dysku powtarzają się cyklicznie, jeśli chcemy stworzyć nową strukturę katalogów, którą tworzymy w identyczny sposób co miesiąc/tydzień/dzień to warto pomyśleć o zrobieniu bardzo prostego pliku wsadowego o rozszerzeniu bat aby zaoszczędzić sobie pracy.
Plik taki zawiera zazwyczaj sekwencję komend jaką wpisuje się w wierszu poleceń.
W ten sposób można również kopiować logi, usuwać pliki posiadające określoną nazwę, rozszerzenie lub datę modyfikacji, zapisywać wyniki danego polecenia sieciowego do pliku. Sam plik bat może się uruchamiać automatycznie co jakiś czas za sprawą schedulera (programu do planowania zadań) w systemie windows. Kreator planowania zadań w Windows XP uruchamia się przez START-Programy-Akcesoria-Narzędzia systemowe-Zaplanowane zadania. W systemie Vista i Windows 7 dojście do funkcji jest identyczne. Po angielsku nazwa programu brzmi Task scheduler

Aby utworzyć plik bat wystarczy zwykły notatnik systemowy, przy zapisywaniu zmieniamy typ pliku na Wszystkie pliki a nazwę zapisujemy z rozszerzeniem bat

zapisywanie pliku bat

Treść pliku
Treścią pliku może być przykładowo taka treść

mkdir ROZRYWKA\MUZYKA\mp3
mkdir ROZRYWKA\MUZYKA\wav
mkdir ROZRYWKA\FILM\seriale\
mkdir ROZRYWKA\FILM\kinowe\

Plik bat z taką zawartością kopiujemy do katalogu w którym chcemy go wykonać i po wykonaniu takiej sekwencji powstanie struktura katalogów, którą będziemy zapełniać plikami. To proste rozwiązanie ma swoje wady:
- nie posiada żadnych mechanizmów zabezpieczających
- trzeba pamiętać, aby zawartość katalogów skopiować przed ponownym wykonaniem pliku lub uruchamiać plik w innym katalogu niż za pierwszym razem w przeciwnym razie pliki zostaną utracone.
Można zrobić drugi plik bat który zajmie się kopiowaniem w terminie wcześniejszym niż planowane ponowne utworzenie, ale działanie jego może być zakłócone wyłączeniem komputera więc lepiej zawsze sprawdzić efekt. O pliku bat kopiującym katalogi z zawartością napiszę więcej innym razem.

Dodam tylko że można wykorzystać polecenie:
xcopy katalog_źródłowy katalog_docelowy /E - opcja /E oznacza że xcopy kopiuje wszystkie podkatalogi łącznie z pustymi. Jeśli pominąć puste to można zastosować opcję /S