Renombrador

Priskribo de la ĉi-paĝa enhavo

Dosier-renomigilo por Psion 5mx.

Etikedoj:

Mi verkis ĉi malgranda programo en OPL por mia Psion. Ĝi renomigas, per proceduro ĉiu-okaze verkenda, la dosierojn kies nomoj liste estas en teksto-dosiero. Mi verkis anke alian alian pli evoluintan renomigilon kun malsama vidpunkto.

Fontkodo

rem renombrador

rem Un renombrador de ficheros para la Psion 5mx.
rem Dosier-renomigilo por Psion 5mx.
rem A file renamer for the Psion 5mx.

rem Renombra archivos de Psion 5mx cuyos nombres están en un archivo de texto.
rem Ghi alinomigas dosierojn en teksta dosiero listitajn.
rem It renames files whose names are included in a text file.

rem Carece de interfaz de usuario. Hay que adaptar el código fuente a cada caso.
rem Senuzinterfaca. La fontkodon endas chiukaze adapti.
rem No user interface. The source code has to be configured for every case.

rem Copyright (C) 2004-2007 Marcos Cruz (http://programandala.net)
rem Licencia/Permesilo/License:
rem http://programandala.net/license

rem --------------------------------------------

rem 2007-01-20
rem Mejorado. Ampliado con nuevo proc para renombrar.

rem 2006-07-12
rem Mejorado. Ampliado con nuevo proc para renombrar.

rem 2005-10-21
rem Segunda versión, mejorada.
rem Dua versio, plibonigita.
rem Second version, improved.

rem 2004-09-10
rem Primera versión.
rem Unua versio.
rem First version.

rem --------------------------------------------

proc main:

    local file_list$(255)
    local old_file_name$(255)
    local new_file_name$(255)
    local ret%,handle%,mode%
    local address&
    local k%

    setpath "d:\MY_PATH\":rem CONFIGURE THIS

    address&=addr(old_file_name$)

    rem CONFIGURE THIS:
rem print "Filename with the file list?",
rem input file_list$
    file_list$ = "c:\MY_FILE_LIST.txt":rem OR CONFIGURE THIS
    cls
    mode%=$0400 OR $0020  rem open=$0000,text=$0020,share=$0400
    ret%=ioopen(handle%,file_list$,mode%)
    if ret%<0
        error:(ret%)
        return
    endif

    while 1

        k% = key
        if k% rem if keypress
            if k%=27 rem Esc pressed
                return rem otherwise wait for a key
            elseif get=27
                return rem Esc pressed
            endif
        endif

        ret%=ioread(handle%,address&+1,255)
        if ret%<0
            if ret%<>-36 rem not end of file
                error:(ret%)
            endif
            break
        else
            pokeb address&,ret% rem leading byte count
            new_file_name$=rename_02$:(old_file_name$)
            if exist(old_file_name$) and (new_file_name$<>old_file_name$)
                    print old_file_name$;" > ";
                    if not exist(new_file_name$)
                        rename old_file_name$,new_file_name$
                        print new_file_name$
                    else
                        print "Error: YA EXISTE. Pulsa una tecla para seguir."
                        pause 0
                    endif
            endif
        endif

    endwh

    ret% = ioclose(handle%)
    if ret%
        error:(ret%)
    endif
    pause -100
    key

endp

proc rename_01$:(file_name$)

    rem Renombra a minúsculas
    rem y cambia los espacios por guiones bajos.

    local renamed$(255)
    local addr&
    local i%

    renamed$ = lower$(file_name$)
    addr& = addr(renamed$)
    i% = len(renamed$)

    while i%
        if peekb(addr&+i%) = 32 rem space
            pokeb addr&+i&,%_
        endif
        i% = i%-1

    endwh

    return renamed$

endp

proc rename_02$:(file_name$)

    rem entrada:
    rem     x_p1_p2_pn[_muestra].jpg
    rem salida:
    rem     x[_muestra].jpg

    rem 2006-07-12

    local left%,right%

    left% = loc(file_name$,"_")-1
    right%=4+8*abs(loc(file_name$,"_muestra.jpg")>0)
    return left$(file_name$,left%)+right$(file_name$,right%)

endp

proc rename_03$:(file_name$)

    rem Cambia los guiones bajos por espacios.

    rem 2007-01-20

    local renamed$(255)
    local addr&
    local i%

    renamed$ = file_name$
    addr& = addr(renamed$)
    i% = len(renamed$)

    while i%
        if peekb(addr&+i%) = %_
            pokeb addr&+i&,32 rem space
        endif
        i% = i%-1

    endwh

    return renamed$

endp

proc error:(val%)

    print "Error",val%,err$(val%)
    get

endp

Deŝutoj