Hirdetés

Keresés

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

  • csaszizoltan
    csendes tag

    Köszi a tippeket, végül ez lett belőle:
    @echo off
    setlocal EnableDelayedExpansion
    set fajlnev=%date%txt
    d:
    cd D:\PortableApps\ftp-list
    del fajlnev
    winscp.com /script=ftpserverem>>%fajlnev%
    rem 5=fájlméret byte-okban
    rem 6=hónap rövid neve
    rem 7=nap sorszáma
    rem 8=idő
    rem 9-=fajlnev
    for /f "skip=11 tokens=5,6,7,8,* delims= " %%A in (%fajlnev%) do call :sorfeldolgozas "%%E" "%%A" "%%B" "%%C" "%%D"
    goto :vege

    :sorfeldolgozas
    set nev=%~1
    set /a meret=%~2/1024/1024
    if "%~3" == "Jan" set honap=01
    if "%~3" == "Feb" set honap=02
    if "%~3" == "Mar" set honap=03
    if "%~3" == "Apr" set honap=04
    if "%~3" == "Maj" set honap=05
    if "%~3" == "Jun" set honap=06
    if "%~3" == "Jul" set honap=07
    if "%~3" == "Aug" set honap=08
    if "%~3" == "Sep" set honap=09
    if "%~3" == "Oct" set honap=10
    if "%~3" == "Nov" set honap=11
    if "%~3" == "Dec" set honap=12
    if %~4 lss 10 (set nap=0%~4) else (set nap=%~4)
    set ora=%~5
    echo %honap%-%nap%,%ora%,%nev%,%meret%MB>>ftp-%fajlnev%

    :vege

    Szia!

    Az If sorozat helyére sorok száma alapján rövidebb, bár nem derül ki róla látványosabban, hogy mit csinál:

    setlocal EnableDelayedExpansion
    Set _Count=1
    for %%G in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do (
    If %~3==%%G Set _Result=0!_Count!
    Set /A _Count+=1
    )
    Endlocal EnableDelayedExpansion & Set Honap=%_Result:~-2%

    A SetLocal Ena... engedélyezi, hogy futásidőben értékelődjenek ki változók, amit a változónál ! jellel mondunk meg.
    Az Endlocal sorát így kell leírni (egy sorban), hogy a Honap jól kapjon értéket.
    A %_Result:~-2% megoldásnak nem voltam eddig tudatában, ez annyit tesz a -2-vel hogy a string jobb végéről visszaszámolva két karakterrel metszi ki.
    A Maj helyett May-t kell írni.

    Üdv.

  • cigam
    titán

    Köszi a tippeket, végül ez lett belőle:
    @echo off
    setlocal EnableDelayedExpansion
    set fajlnev=%date%txt
    d:
    cd D:\PortableApps\ftp-list
    del fajlnev
    winscp.com /script=ftpserverem>>%fajlnev%
    rem 5=fájlméret byte-okban
    rem 6=hónap rövid neve
    rem 7=nap sorszáma
    rem 8=idő
    rem 9-=fajlnev
    for /f "skip=11 tokens=5,6,7,8,* delims= " %%A in (%fajlnev%) do call :sorfeldolgozas "%%E" "%%A" "%%B" "%%C" "%%D"
    goto :vege

    :sorfeldolgozas
    set nev=%~1
    set /a meret=%~2/1024/1024
    if "%~3" == "Jan" set honap=01
    if "%~3" == "Feb" set honap=02
    if "%~3" == "Mar" set honap=03
    if "%~3" == "Apr" set honap=04
    if "%~3" == "Maj" set honap=05
    if "%~3" == "Jun" set honap=06
    if "%~3" == "Jul" set honap=07
    if "%~3" == "Aug" set honap=08
    if "%~3" == "Sep" set honap=09
    if "%~3" == "Oct" set honap=10
    if "%~3" == "Nov" set honap=11
    if "%~3" == "Dec" set honap=12
    if %~4 lss 10 (set nap=0%~4) else (set nap=%~4)
    set ora=%~5
    echo %honap%-%nap%,%ora%,%nev%,%meret%MB>>ftp-%fajlnev%

    :vege

    Sőt a végére odabiggyesztve ezt, fullextrás lett:
    rem sorbarendezi a napi listát
    sort ftp-%fajlnev% /o ftp-%fajlnev%

    rem kiveszi a duplikátumokat
    for /f "tokens=* delims= " %%A in (ftp-%fajlnev%) do (find "%%A" < teljes_lista.txt > nul || >> teljes_lista.txt echo.%%A)

    goto:eof

    Bár ez utóbbi csak holnap fog kiderülni :B

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