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

MS-DOS 6.22 - szukanie katalogu i przypisanie do zmiennej

badboy23 26 Paź 2012 16:34 1389 13
REKLAMA
  • REKLAMA
  • Pomocny post
    #2 11453012
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    A po czym ma ten "plik BAT" wiedzieć że już znalazł ten katalog?
    i co ma przypisać do zmiennej? nazwę katalogu? ścieżkę dostępu?
  • REKLAMA
  • #3 11453080
    badboy23
    Poziom 27  
    Posty: 1576
    Ocena: 49
    marek003 napisał:
    A po czym ma ten "plik BAT" wiedzieć że już znalazł ten katalog?
    i co ma przypisać do zmiennej? nazwę katalogu? ścieżkę dostępu?


    Nazwa katalogu będzie stała i wpisana do pliku BAT.
  • Pomocny post
    #4 11453165
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    W takim wypadku nie rozumiem co chcesz by wykonywał skrypt.
    Cytat:
    ...znalazł mi katalog na dysku i przypisał do zmiennej ...
    Możesz to jakoś rozwinąć?
  • #5 11453264
    badboy23
    Poziom 27  
    Posty: 1576
    Ocena: 49
    marek003 napisał:
    W takim wypadku nie rozumiem co chcesz by wykonywał skrypt.
    Cytat:
    ...znalazł mi katalog na dysku i przypisał do zmiennej ...
    Możesz to jakoś rozwinąć?


    Sorry, źle napisałem temat, katalog będzie w stałym miejscu aczkolwiek litera dysku może się zmieniać. Raczej chodzi o szukanie katalogu na dyskach w komputerze.
  • Pomocny post
    #6 11453325
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    Ale z ciebie trzeba wyciągać. To jakaś tajemnica co ma robić cały skrypt?
    ale nie ważne.
    Czyli skrypt ma znaleźć literę dysku.
    Czy masz określoną ilość dysków (liter) do przeszukania czy jednak trzeba sprawdzić cały alfabet?
  • REKLAMA
  • #7 11453452
    badboy23
    Poziom 27  
    Posty: 1576
    Ocena: 49
    marek003 napisał:
    Ale z ciebie trzeba wyciągać. To jakaś tajemnica co ma robić cały skrypt?


    Nie, nie jest sorry ale pisałem posta z 2 calla ekranik:)

    ma to wyglądać tak

    Bios znajduje się na ?\bios zależy jaką litera zostanie przypisana wiadomo:)
    -----------------------------------------
    Lista biosów
    bios1
    bios2
    bios3
    -----------------------------------------
    Podaj nazwę biosu? bios1
    czy zapisać pamięć kości biosem: bios1 Y/N

    marek003 napisał:
    Czyli skrypt ma znaleźć literę dysku.


    Ma znaleźć literę dysku na którym jest katalog bios.

    marek003 napisał:
    Czy masz określoną ilość dysków (liter) do przeszukania czy jednak trzeba sprawdzić cały alfabet?


    Niestety całą litanie :)

    __________________________________________
    echo off
    IF NOT EXIST A:\Bios GOTO KATALOG
    IF NOT EXIST B:\Bios GOTO KATALOG
    IF NOT EXIST C:\Bios GOTO KATALOG
    IF NOT EXIST D:\Bios GOTO KATALOG
    IF NOT EXIST E:\Bios GOTO KATALOG
    IF NOT EXIST F:\Bios GOTO KATALOG
    IF NOT EXIST G:\Bios GOTO KATALOG
    I tak do Z

    :KATALOG
    __________________________________________

    Co o tym myślisz? :)
  • #8 11453862
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    Przyznaje bez bicia że dawno temu trochę pisałem takie rzeczy ale nie byłem w tym orłem i to było bardzo dawno.

    Jeżeli jakiś forumowicz miałby inny pomysł nie będę się obrażał :)

    Właśnie myślałem o czymś podobnym co zaproponowałeś tylko w tym przypadku nie z "goto" i bez "not" no i niestety do Z

    Poniżej kod który sprawdza istienie katalogu bios na poszczególnych dyskach i (jeżeli jest) to przyporządkowuje do zmiennej "ddd" ścieżkę dostępu, następnie wyświetla tą ścieżkę oraz wyświetla pliki z tego katalogu.

    (nie wiem dlaczego ale przy sprawdzaniu dysku A wywala mi błąd ale sprawdzam kod na XP a nie na czystym DOSie może w tym jest problem)

    @ ECHO OFF
    CLS
    
    SET ddd=nic
    
    IF EXIST B:\Bios SET ddd=B:\Bios
    IF EXIST C:\Bios SET ddd=C:\Bios
    IF EXIST D:\Bios SET ddd=D:\Bios
    IF EXIST E:\Bios SET ddd=E:\Bios
    IF EXIST F:\Bios SET ddd=F:\Bios
    IF EXIST G:\Bios SET ddd=G:\Bios
    
    
    IF %ddd%==nic GOTO info
    
    
    ECHO Bios jest na dysku %ddd%
    ECHO .
    ECHO Dostepne biosy:
    ECHO .
    cd %ddd%
    
    
    
    FOR %%A in (*.*) DO ECHO %%A
    
    GOTO koniec
    
    
    
    :info
    ECHO Brak katalogu bios na dyskach komputera
    
    
    :koniec
    ECHO .
    PAUSE


    Z resztą sobie poradzisz ?
  • REKLAMA
  • #10 11453950
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    Trochę zmieniłem kod we wcześniejszym poście by "ładniej" wyświetlał ewentualne biosy.
  • Pomocny post
    #11 11454818
    WojtasJD
    Poziom 43  
    Posty: 13771
    Pomógł: 2911
    Ocena: 1576
    for %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\BIOS\nul echo BIOSow szukaj w %%x:\BIOS
  • #12 11456571
    badboy23
    Poziom 27  
    Posty: 1576
    Ocena: 49
    WojtasJD napisał:
    for %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\BIOS\nul echo BIOSow szukaj w %%x:\BIOS


    Jak zamienić coś takiego:
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    W taki krótki skrypt?
  • #13 11457209
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 487
    Ale wg mnie nie uczysz się. (tu ukłony dla mistrza - kolegi WojtasJD)


    Zobacz co robi pętla for i warunek if i dostosuj do siebie.

    Twój kod sprawdza dyski (czy są) na zasadzie że jeżeli nie ma to przejdź dalej

    A przykład sprawdzał czy są dyski z katalogiem bios na zasadzie że jeżeli są to je pokaż

    więc łatwo to przerobić.

    Czyli powinno wyglądać tak:

    @echo off
    for %%x in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\nul echo %%x:
    pause


    Najlepiej na przyszłość przeczytać kod "po polsku":

    Powtarzaj pętlę (FOR) podstawiając za zmienną %%x każdą literkę ze zbioru w nawiasie i jeżeli (IF) istnieje ścieżka (exist) z daną zmienną to wypisz (echo) na monitorze tą ścieżkę
  • #14 11457743
    badboy23
    Poziom 27  
    Posty: 1576
    Ocena: 49
    marek003 napisał:
    Ale wg mnie nie uczysz się. (tu ukłony dla mistrza - kolegi WojtasJD)


    Zobacz co robi pętla for i warunek if i dostosuj do siebie.

    Twój kod sprawdza dyski (czy są) na zasadzie że jeżeli nie ma to przejdź dalej

    A przykład sprawdzał czy są dyski z katalogiem bios na zasadzie że jeżeli są to je pokaż

    więc łatwo to przerobić.

    Czyli powinno wyglądać tak:

    @echo off
    for %%x in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\nul echo %%x:
    pause


    Najlepiej na przyszłość przeczytać kod "po polsku":

    Powtarzaj pętlę (FOR) podstawiając za zmienną %%x każdą literkę ze zbioru w nawiasie i jeżeli (IF) istnieje ścieżka (exist) z daną zmienną to wypisz (echo) na monitorze tą ścieżkę


    Uczę się :) zrobiłem to samo tylko w exist zjadłem literkę "i" i dlatego nie działało dzięki :)

    @Echo. off
    for %%x in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exst %%x:\nul echo Dysk - %%x:

    tak napisałem :)

Podsumowanie tematu

✨ Użytkownik poszukiwał sposobu na stworzenie skryptu BAT, który zlokalizuje katalog na dysku i przypisze jego ścieżkę do zmiennej. W trakcie dyskusji wyjaśniono, że katalog będzie miał stałą nazwę, ale litera dysku może się zmieniać. Uczestnicy zaproponowali różne podejścia do rozwiązania problemu, w tym użycie pętli FOR oraz warunków IF do sprawdzenia istnienia katalogu na różnych literach dysków. Ostatecznie zaproponowano kod, który iteruje przez litery dysków i przypisuje ścieżkę do zmiennej, jeśli katalog istnieje.
Wygenerowane przez model językowy.
REKLAMA