Hirdetés

Keresés

Új hozzászólás Aktív témák

  • I02S3F
    addikt

    Szia!

    Szerintem a tanár kódjában az a 2 sor arra szolgál, hogy szimbolizálja a működésbeli különbséget.

    & - a következő parancs mindenképp lefut, valójában több parancsot adsz meg 1 sorban
    && - ha az előző parancs kimenete 0 akkor lefut (vagyis ez már egy előfeltétel ellenőrzés)
    || - ha az előző parancs kimenete nem 0 akkor fut le (tehát ez is egy előfeltétel ellenőrzés)

    a konkrét feladatoknál:

    1)
    Először másol, ha sikeres volt, akkor töröl

    COPY szov.txt D:\ && DEL szov.txt

    && utáni rész csak akkor fut le ha sikeres volt az első parancs, vagyis ez így ok

    2)
    Csak akkor próbálja kiírni egy fájl tartalmát, ha az létezik

    DIR szov.txt >NUL && TYPE szov.txt

    && utáni rész csak akkor fut le ha sikeres volt az első parancs, vagyis ez is rendben, csak akkor fogja kiírni a tartalmát ha a dir parancs kimenete 0 volt, ami akkor áll elő, ha a file létezik.

    egy alternatív megoldás erre:
    if exist szov.txt type szov.txt
    (ha létezik szov.txt írd ki szov.txt tartalmát, ez is egyfajta előfeltétel)

    3)
    Próbálja ki vizsgálat nélkül is a végrehajtást

    DIR szov.txt >NUL & TYPE szov.txt

    itt viszont mivel csak 1 & jel van, így a második parancs is minden esetben lefut, függetlenül az első parancs kimenetétől, vagyis akkor is megpróbálja majd kiírni a szov.txt tartalmát, ha az nem is létezik

    4)

    btw:

    cls
    @echo off

    így a cls látszik, akkor inkább

    @echo off
    cls

    és akkor eltűnt minden.

    Üdv,
    Csontikka

    Szia!

    Hát nagyon szépen köszönöm! Arra jöttem rá, hogy nekem nagyon szükségem van a szájbarágós magyarázatra.

    Piros pontneked!:)

  • I02S3F
    addikt

    Sziasztok!

    Batch-t tanulok.

    Feladat

    Primitív „move” parancs összefűzéssel
    – Először másol, ha sikeres volt, akkor töröl
    • Előfeltétel ellenőrzés
    – Csak akkor próbálja kiírni egy fájl tartalmát,
    ha az létezik
    – Próbálja ki vizsgálat nélkül is a végrehajtást
    • Hibakezelés
    – Ha a másolás parancs nem fut le, akkor írjon
    ki egy üzenetet (pl. „SIKERTELEN”)

    A tanár megoldása

    COPY szov.txt D:\ && DEL szov.txt
    • DIR szov.txt >NUL && TYPE szov.txt
    • DIR szov.txt >NUL & TYPE szov.txt
    • COPY szov.txt D:\ || ECHO sikeretelen

    Az én megoldásom

    cls
    @echo off
    copy %1 %2 || echo A muvelet sikertelen && del /Q %1
    echo nyomjon egy gombot a kilepeshez
    pause > NUL

    Kérdésem az előfeltétel ellenőrzés hogyan oldható meg?
    A tanár megoldásában a 2. és 3. sor nekem értelmetlennek tűnik, mi értelme van?

    :R

Új hozzászólás Aktív témák