program minus; {$APPTYPE CONSOLE} uses SysUtils; var DirInicial: String; IncluirSubdirectorios: Boolean; var pp, qq: Integer; function ProcesarLinea(Clave, S: String): String; var P, Q: Integer; begin P := Pos(Clave, UpperCase(S)); if P <> 0 then begin Q := P+ Length(Clave); P := Q; repeat Inc(P); until (Copy(S, P, 1) = '"') or (P >= Length(S)); pp := p; qq := q; S := Copy(S, 1, Q-1) + LowerCase(Copy(S, Q, P-Q)) + Copy(S, P, Length(S)); end; ProcesarLinea := S; end; procedure ProcesarFichero(Nombre: String); var Fichero, Salida: TextFile; Linea: String; begin Writeln(Nombre); Assign(Fichero, Nombre); Reset(Fichero); Assign(Salida, '~.~'); Rewrite(Salida); while not Eof(Fichero) do begin Readln(Fichero, Linea); Linea := ProcesarLinea('HREF="', Linea); Linea := ProcesarLinea('SRC="', Linea); Writeln(Salida, Linea); end; Close(Fichero); Close(Salida); DeleteFile(Nombre); RenameFile('~.~', Nombre); end; function EsHTML(Nombre: String): Boolean; var P: Integer; Extension: String; begin P := Pos('.', Nombre); Extension := UpperCase(Copy(Nombre, P+1, Length(Nombre))); EsHTML := (Extension = 'HTM') or (Extension = 'HTML'); end; procedure PonerRefsMinusculas(NombreDir: String); var SR: TSearchRec; Resultado: Integer; begin Resultado := FindFirst(NombreDir + '\*.*', faAnyFile, SR); while Resultado = 0 do begin if SR.Name[1] <> '.' then begin if SR.Attr and faDirectory <> 0 then begin if IncluirSubdirectorios then PonerRefsMinusculas(NombreDir + '\' + SR.Name); end else if EsHTML(SR.Name) then ProcesarFichero(NombreDir + '\' + SR.Name); end; Resultado := FindNext(SR); end; end; procedure PonerNombresMinusculas(NombreDir: String); var Minusculas: String; SR: TSearchRec; Resultado: Integer; begin Resultado := FindFirst(NombreDir + '\*.*', faAnyFile, SR); while Resultado = 0 do begin if SR.Name[1] <> '.' then begin Writeln(NombreDir + '\' + SR.Name); Minusculas := NombreDir + '\' + Lowercase(SR.Name); RenameFile(NombreDir + '\' + SR.Name, Minusculas); if ((SR.Attr and faDirectory) <> 0) and IncluirSubdirectorios then PonerNombresMinusculas(Minusculas); end; Resultado := FindNext(SR); end; end; begin GetDir(0, DirInicial); if DirInicial[Length(DirInicial)] = '\' then Delete(DirInicial, Length(DirInicial), 1); IncluirSubdirectorios := (ParamStr(1) = '/s') or (ParamStr(1)='/S'); PonerNombresMinusculas(DirInicial); PonerRefsMinusculas(DirInicial); end.