Olá Rubens,
Veja se ajuda:
NOTA: Use uma única vez para cada novo texto informado e verifique. Se voltar a rodar o utilitário duplica o novo texto, ok?
Function Main( lDelbk )
Local x, aDirect1, aDir1:={}, cMsg, cArq1, cArq2, cNewTexto
/*
Definir aqui o Texto existente e o Novo Texto...
*/
Local cTexto1 := "Janela("
Local cTexto2 := "Janela( ProcName(),"
If lDelbk != Nil .And. Upper( lDelbk ) = "/Y"
! DEL *.bak
ElseIf File( "*.BAK" )
cMsg:="Arquivos com extensäo .BAK existente!;"
cMsg+="Faça backup e apague para continuar."
HB_Alert( cMsg )
Return Nil
EndIf
CLEA SCREEN
aDirect1 := Directory( "*.PRG" )
AEval( aDirect1, { | cPrg | AaDd( aDir1, cPrg[1] ) } )
For x:=1 To Len( aDir1 )
cArq1 := aDir1[x]
If Upper( cArq1 ) = "MUDATEXTO.PRG"
Loop // se for esse arquivo, não altera...
EndIf
@ 5,2 say spac(50)
@ 5,2 say "Trabalhando arquivo: " + cArq1
cNewTexto := Hb_MemoRead( cArq1 )
cArq2 := StrTran( Upper( cArq1 ), ".PRG", ".BAK" )
Hb_MemoWrit( cArq2, cNewTexto ) // salva backup do arquivo antes de alterar
cNewTexto := StrTran( cNewTexto, cTexto1, cTexto2 ) // altera o arquivo com CASE SENSITIVE
Hb_MemoWrit( cArq1, cNewTexto ) // salva o arquivo com as alterações
Next
@ 7,2 say " "
Return Nil