Renombrador
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