Hirdetés

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

  • Fire/SOUL/CD

    félisten

    válasz zseko #3444 üzenetére

    12 erdei köb fa felkuglizása és behordása után éreztem késztetést, hogy a rég elfeledett/megkopott -nagyon alap- batch programozási "tudásomat" felfrissítsem, amolyan "retro-feeling" kapcsán. :DDD
    Szóval az alábbi "kódot" mentsd el tetszőleges névvel, de BAT kiterjesztéssel.

    @ECHO OFF
    CLS
    ECHO ╔═══════════════════════════════════════════════════╗
    ECHO ║ Fire/SOUL/CD - 2022 ║
    ECHO ╠═══════════════════════════════════════════════════╣
    ECHO ║ A BATCH fájl a megadott mappában az adott fájlok ║
    ECHO ║ nevével megegyező nevű mappákat hoz létre, majd ║
    ECHO ║ átmozgatja a fájlokat a létrehozott mappákba. ║
    ECHO ║ ║
    ECHO ║ BATCH fájl [PARAMÉTER] ║
    ECHO ║ PARAMÉTER: Elhagyható, ez esetben a BATCH fájlt ║
    ECHO ║ tartalmazó mappában megy végbe a ║
    ECHO ║ művelet. ║
    ECHO ║ Megadható, ez esetben KÖTELEZŐEN ║
    ECHO ║ MACSKAKÖRMÖK KÖZT kell szerepeltetni ║
    ECHO ║ a mappa teljes útvonalát. ║
    ECHO ║ ║
    ECHO ║ Példa: BATCH fájl "d:\árvíztűrő tükörfúrógép" ║
    ECHO ╚═══════════════════════════════════════════════════╝

    ECHO:

    ECHO BATCH fájl: "%~nx0"
    IF NOT "%~1"=="" (
    IF NOT EXIST "%~1" (
    ECHO Paraméter: "%~1"
    ECHO Műveleti mappa: Paraméter hibás, ilyen mappa nem létezik.
    GOTO @EXIT
    ) ELSE (
    ECHO Paraméter: "%~1"
    CD /D "%~1"
    )
    ) ELSE (
    ECHO Paraméter: Nincs megadva
    )

    ECHO Műveleti mappa: "%CD%"

    ECHO:

    :@REPEATGETKEY
    SET /P CONTINUEORNOT=Futtassam a műveletet? [I/N]
    IF /I %CONTINUEORNOT%==N EXIT
    IF /I NOT %CONTINUEORNOT%==I (
    ECHO Nem megfelelő billentyű.
    ECHO:
    GOTO @REPEATGETKEY
    )

    ECHO:

    SET FILECOUNTER=0
    SET ERRORCOUNTER=0
    SET BATCHFILENAME="%~nx0"
    FOR %%a IN (*) DO (
    IF NOT "%%a" == %BATCHFILENAME% (
    ECHO Átmozgatandó fájl: "%%a"
    ECHO Létrehozandó mappa: "%%~na"
    IF NOT EXIST "%%~na" (
    MD "%%~na"
    MOVE "%%a" "%%~na"
    SET /A FILECOUNTER=FILECOUNTER+1
    ) ELSE (
    ECHO ╔══════════════════════════════════════════════════════════════════════════════════════╗
    ECHO ║ HIBA: Mappát nem lehet létrehozni, mert ilyen névvel már létezik egy fájl, kihagyva. ║
    ECHO ╚══════════════════════════════════════════════════════════════════════════════════════╝
    SET /A ERRORCOUNTER=ERRORCOUNTER+1
    )
    ECHO:
    )
    )

    ECHO ******************* EREDMÉNY *******************
    ECHO Sikeresen átmozgatott fájl(ok): %FILECOUNTER% db.
    ECHO Sikertelen művelet(ek): %ERRORCOUNTER% db.

    :@EXIT
    ECHO:
    ECHO Program vége. Bármely billentyű leütésével kiléphetsz.
    PAUSE>NUL

    1. Amennyiben nem akarsz belemódosítani, akkor nincs további teendőd

    2. Ha bele szeretnél módosítani ÉS ékezetes betűket is használnál, akkor viszont a Windows beépített szövegszerkesztője alkalmatlan a feladatra. Ez esetben tedd ezt:
    # töltsd el a Notepad++ aktuális verzióját (portable is lehet),
    # nyisd meg a korábban tetszőleges néven elmentett BAT fájlt
    # állítsd át a képen látható módon a karakterkódolás OEM 852-re, ekkor már tudsz ékezetes karaktereket is használni.

    FONTOS!
    Ha ezt a kódot kimásolod és beilleszted egy üres BAT kiterjesztésű fájlba, akkor is "krix-krax-ok" lesznek, mert a webes kódolás "nem fér össze" a tradicionális DOS karakterkódolással Windows alatt. Ebben az esetben UTF-8-ra állítsd, így legalább a Notepad++ -ban jól jelenik meg, de futtatáskor akkor is "matyómintás" lesz...

    3. A BAT fájlt bemásolhatod abba a mappába, ahol futtatni szeretnéd, simán futtathatod vagy nem másolod be abba a mappába, hanem paraméterként megadott, hogy melyik mappán végezze el a műveletet

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