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

Skrypt powłoki Windows. Policzenie katalogów na dysku.

Marian83 09 Mar 2006 21:27 2810 9
REKLAMA
  • #1 2395646
    Marian83
    Poziom 20  
    Posty: 360
    Pomógł: 50
    Ocena: 7
    Czy ktoś z uzytkowników ma pomysł jak policzyc katalogi w danym miejscu dysku. Chodzi mi o skrypt powłoki Windows.
  • REKLAMA
  • #2 2398264
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 240
    Wydaje mi się że rekurencja i zastosowanie polecenia for powinno załatwić sprawe.
  • #3 2405788
    Marian83
    Poziom 20  
    Posty: 360
    Pomógł: 50
    Ocena: 7
    Co dokładnie przez to rozumiesz. Napisałem taki prosty skrypt który wysyła do pliku rezultat dzialania polecenia dir, a pozniej przezsukuje ten plik w poszukiwaniu slowa "katalog". Wydaje mi sie ze to nie jest najlepsze rozwiazanie.
  • REKLAMA
  • #4 2406306
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 240
    For ma możliwość przeszukiwania i podstawia do zmiennej kolejne nazwy dopasowane przy pomocy symboli wieloznacznych, wiec sam znajdzie wszystkie katalogi. Jak natrafi na katalog to musi do niego wejść i siebie wywołać jeszcze raz. Za każdym razem jak trafi na jakiś katalog to musi tylko zwiększyć stan licznika.
  • #5 2406650
    Marian83
    Poziom 20  
    Posty: 360
    Pomógł: 50
    Ocena: 7
    Czy ktos z użytkowników posiada jakies informacje na temat pisania skryptów powłoki windows.
  • #6 2408561
    wiso
    Poziom 15  
    Posty: 92
    Pomógł: 12
    Ocena: 2
    Marian83 napisał:
    Czy ktos z użytkowników posiada jakies informacje na temat pisania skryptów powłoki windows.


    cóż możen nie będzie to odkrywcze ale w pomocy do windy jest trochę,

    poza tym polecam <polecenie> z przełącznikiem /? lub -?

    np: for /?
    dir /?
    itd.

    pod Xp'ekiem oprócz opisu switchów każdego polecenia jest też kilka przykładów
  • REKLAMA
  • #7 2415574
    Highway
    Poziom 12  
    Posty: 22
    Pomógł: 1
    Zajrzyj do książki "Programowanie Windows 2000" Heliona. Tam jest bardzo przystępnie napisany rozdział o programowaniu skryptów powłoki w ATL i MFC.

    pozdrowienia
    Highway
    www.idreams.pl
  • REKLAMA
  • #8 2429003
    Marian83
    Poziom 20  
    Posty: 360
    Pomógł: 50
    Ocena: 7
    elektryk napisał:
    For ma możliwość przeszukiwania i podstawia do zmiennej kolejne nazwy dopasowane przy pomocy symboli wieloznacznych, wiec sam znajdzie wszystkie katalogi. Jak natrafi na katalog to musi do niego wejść i siebie wywołać jeszcze raz. Za każdym razem jak trafi na jakiś katalog to musi tylko zwiększyć stan licznika.

    Szczerze mówiąc to nie wiem jak to zrobić, czy mógłbyś mi to jakoś przybliżyć? Jak zadeklarować licznik, w jaki sposób wejść do katalogu?
  • #9 2431173
    Marian83
    Poziom 20  
    Posty: 360
    Pomógł: 50
    Ocena: 7
    Napisalem cos takiego:
    @Echo. off
    cls
    if "%1"=="" goto domyslne
    tree /a %1 >plik.txt
    find /c "---" plik.txt>wynik.txt
    :domyslne
    if not "%1"=="" goto koniec
    tree /a >plik.txt
    find /c "---" plik.txt>wynik.txt
    :koniec
    del plik.txt
    echo koniec
    tylko nie wiem jak wzciagnac ilosc katalogow z pliku wynik.txt
  • #10 2432934
    Marian83
    Poziom 20  
    Posty: 360
    Pomógł: 50
    Ocena: 7
    Jak by ktoś był zainteresowany:
    @Echo. off
    rem *************************************************
    rem ** **
    rem ** **
    rem ** Zlicza katalogi wraz z podkatalogami **
    rem ** **
    rem ** zliczanie.bat %1 **
    rem ** %1 - podajemy sciezke **
    rem ** Jezeli nie podamy parametrow to zliczanie **
    rem ** nastapi w aktulanym katalogu **
    rem ** **
    rem ** **
    rem *************************************************
    cls
    if "%1"=="" goto domyslne
    echo LIczba katalogow i podkatalogow (zawartosc drzewa katalogow) w lokalizacji %1 :
    tree %1 /a | find /c "---"
    echo Liczba katalogow:
    dir %1 /a:d-h/b | find /v /c "?"
    echo Katalogow ukrytych:
    dir %1 /a:dh/b | find /v /c "?"
    echo Plikow:
    dir %1 /a:-d-h/b | find /v /c "?"
    echo Plikow ukrytych:
    dir %1 /a:-dh/b | find /v /c "?"
    goto koniec
    :domyslne
    echo Liczba katalogow i podkatalogow (zawartosc drzewa katalogow) w biezacej lokalizacji:
    tree /a | find /c "---"
    echo Liczba katalogow:
    dir /a:d-h/b | find /v /c "?"
    echo Katalogow ukrytych:
    dir /a:dh/b | find /v /c "?"
    echo Plikow:
    dir /a:-d-h/b | find /v /c "?"
    echo Plikow ukrytych:
    dir /a:-dh/b | find /v /c "?"
    :koniec
    echo Koniec skryptu

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia skryptu powłoki Windows do zliczania katalogów w określonej lokalizacji na dysku. Proponowane rozwiązania opierają się na wykorzystaniu polecenia for z rekurencją, które pozwala na iteracyjne przeszukiwanie katalogów i zwiększanie licznika przy każdym znalezionym folderze. Alternatywnie, zaproponowano użycie polecenia tree z przełącznikiem /a oraz filtrowanie wyników za pomocą find /c "---" w celu policzenia katalogów i podkatalogów. Dodatkowo, zastosowano polecenie dir z odpowiednimi atrybutami (/a:d-h, /a:dh) i filtrami find /v /c "?" do rozróżnienia katalogów zwykłych, ukrytych oraz plików. Wskazano również na możliwość korzystania z dokumentacji systemowej (polecenia z przełącznikiem /?) oraz literatury dotyczącej programowania skryptów powłoki w środowisku Windows 2000. Przykładowy skrypt batch został przedstawiony, który umożliwia zliczanie katalogów i plików w podanej ścieżce lub w bieżącym katalogu, z wyświetleniem liczby katalogów zwykłych, ukrytych oraz plików.
Wygenerowane przez model językowy.
REKLAMA