logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak napisać skrypt do kopiowania, kompresji i wyłączania systemu?

randolph 06 Sie 2006 20:22 1196 7
REKLAMA
  • #1 2887121
    randolph
    Poziom 13  
    Posty: 184
    Ocena: 31
    Mam prośbę, czy mógłby ktoś wspomóc lamera i napisać programik (ew.podpowiedzieć jak to zrobić). O co chodzi? Muszę miec w pracy taki program, aby po uruchomieniu go przeniósł mi dwa katalogi np (c:\aaa i c:\bbb na dysk d: i je skompresował (rar, zip) i wyłączył system.Poszły dane z połowy miesiąca , HDD padł.
  • REKLAMA
  • #2 2887367
    arnoldk_20
    Poziom 35  
    Posty: 2172
    Pomógł: 290
    Ocena: 114
    Musiałbyś zrobić plik *.bat który by przenosił katalogi, następnie musiałbyś spakować rarem
    odpalasz winrara zaznaczasz katalogi
    następnie dodaj do archiwum Alt+A
    wchodzisz w zakładkę zaawansowane zaznaczasz wyłącz komputer po zakończeniu
    następnie w zakładce ogólne
    klikasz na profile
    i wybierasz zapisz bierzące ustawienia do nowego profilu
    nadajesz nazwę profilu zaznaczasz wszędie ptaszki tylko nie przy "ustaw jako domyślny"
    na pulpicie zostanie utworzona ikona z profilem zmieniasz nazwę na np pakuj.lnk

    przykładowy plik *.bat który musi być w tym samym katalogu co plik pakuj.lnk

    move c:\aaa\*.* d:\aaa\*.*
    move c:\bbb\*.* d:\bbb\*.*
    pakuj.lnk


    piszę z pamięci więc mogą być jakieś błędy
  • REKLAMA
  • #3 2887410
    wir_us
    Poziom 15  
    Posty: 125
    Pomógł: 8
    Ocena: 2
    jeżeli masz linuxa to lista komend układa sie następująco:
    mv /mnt/c/aaa/*.* /mnt/d/aaa/
    mv /mnt/c/bbb/*.* /mnt/d/bbb/
    gunzip /mnt/d/aaa
    gunzip /mnt/d/bbb
    poweroff

    jednak co do pakowaczy nie mam pewności bo w linuxie tylko używam formatu *.tar.bz2

    pod windowsa bym koledze napisał programik w C++ ale troszke zapomniałem tego języka ;9

    Dodano po 6 [sekundy]:

    jeżeli masz linuxa to lista komend układa sie następująco:
    mv /mnt/c/aaa/*.* /mnt/d/aaa/
    mv /mnt/c/bbb/*.* /mnt/d/bbb/
    gunzip /mnt/d/aaa
    gunzip /mnt/d/bbb
    poweroff

    jednak co do pakowaczy nie mam pewności bo w linuxie tylko używam formatu *.tar.bz2

    pod windowsa bym koledze napisał programik w C++ ale troszke zapomniałem tego języka ;(
  • #4 2907863
    randolph
    Poziom 13  
    Posty: 184
    Ocena: 31
    Mam prawie wszytko, dziekuję za pomoc. Pozostał mi jeden problem.
    Po komendach pakujacych skopiowane na dysk d: katalogach, chcę wstawić komendę usuwające te właśnie skopiowane katalogi. Ale wychodzi taki bigos, że komenda del zaczyna sie wykonywać zanim pakery skończą.Wyskakują wtedy błędy. Jak w liniach pliku .bat zrobić opóźnienie czasowe po którym uruchomi sie następna komenda (tutaj - del)?
    PS - a może zamiast opoźnienia czasowego, oczekiwanie nastepnej komendy do zakończenia poprzedniej komendy (komendy z poprzedniej linii) - czy to mozliwe?
    pzdr.
    ran
  • #5 2907989
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 2908356
    arnoldk_20
    Poziom 35  
    Posty: 2172
    Pomógł: 290
    Ocena: 114
    Możesz zrobić tak jak pisałem wcześniej, ale w winrarze zaznaczasz dodatkowo opcję w zakłace ugólnej "Usuń pliki po zarchiwizowaniu"
  • #7 2908521
    randolph
    Poziom 13  
    Posty: 184
    Ocena: 31
    dzieki za podpowiedzi. Wkleiłem skrypt, ale go skasowałem. Olśniło mnie, po Waszych podpowiedziach. Zrobię to trochę inaczej.Skompresuje katalog aaa i bbb w C:\ i dopiero archiwum skopiuje do d:\ i e:\. 75% mniej komend :-).
    edit. O co chodzi z ta zmienną PATH?
    Rozwiazanie ArnoldDK oczywiscie załatwia temat, ale jeszcze powalczę z rowiązaniami alternatywnymi :-)
  • REKLAMA
  • #8 2909094
    Robert B
    Poziom 43  
    Posty: 22594
    Pomógł: 2027
    Ocena: 1412
    W pliku .bat daj wywołanie do innego pliku .bat, który uruchomi program pakujący a dopiero później komendę rd usuwającą katalogi. Np. coś w tym rodzaju:

    @Echo. off
    call pakuj.bat
    rd nazwakatalogu

    katalog zostanie usunięty dopiero po wykonaniu pliku pakuj.bat.

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia skryptu do kopiowania dwóch katalogów (np. c:aaa i c:bbb) na inny dysk (d:), ich kompresji oraz wyłączenia systemu po zakończeniu operacji. Proponowane rozwiązania obejmują użycie pliku wsadowego (*.bat) do przenoszenia plików za pomocą polecenia move, a następnie kompresję archiwów za pomocą programu WinRAR lub narzędzia rar.exe. Wskazano możliwość tworzenia profili w WinRAR z opcją automatycznego wyłączania komputera po zakończeniu archiwizacji oraz usuwania plików po spakowaniu. Poruszono problem synchronizacji kolejności wykonywania poleceń w pliku .bat, gdzie usuwanie katalogów (del lub rd) powinno nastąpić dopiero po zakończeniu kompresji. Zaproponowano rozwiązanie z wywołaniem podskryptu (call pakuj.bat), który najpierw wykona kompresję, a następnie usunie katalogi. Omówiono także alternatywne podejście polegające na kompresji katalogów w miejscu źródłowym, a następnie kopiowaniu gotowych archiwów na docelowe dyski, co upraszcza skrypt i zmniejsza liczbę komend. Wspomniano o zmiennej środowiskowej PATH, która ułatwia wywoływanie programów z dowolnego miejsca w systemie. Dodatkowo, w odpowiedzi pojawiły się przykłady poleceń dla systemu Linux, jednak główny nacisk położono na rozwiązania pod Windows.
Wygenerowane przez model językowy.
REKLAMA