| |
program minus;
{$APPTYPE CONSOLE}
uses SysUtils;
var
DirInicial: String;
IncluirSubdirectorios: Boolean;
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));
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.
|