Saludos a todos;
El siguiente script hace un merge de archivos TXT:
Public Sub FindAndMergeFiles(ByVal sourceDir As String)
Dim fileNames As String() =
{
"CM.txt", "GL.txt",
"IMP6000.txt", "IMP6001.txt", "IMP6002.txt", "IMP6003.txt"
}
Dim curFilename As String = String.Empty
For Each topDir As DirectoryInfo In New DirectoryInfo(sourceDir).GetDirectories("*", SearchOption.TopDirectoryOnly)
' Elimino los archivos principales ("...\topDir\CM.txt", "...\topDir\GL.txt", etc...) de sesiones anteriores.
For Each txtfile As FileInfo In topDir.GetFiles("*.txt", SearchOption.TopDirectoryOnly)
If fileNames.Contains(txtfile.Name, StringComparer.OrdinalIgnoreCase) Then
txtfile.Delete()
End If
Next txtfile
For Each subDir As DirectoryInfo In topDir.GetDirectories("*", SearchOption.AllDirectories)
For Each txtfile As FileInfo In subDir.GetFiles("*.txt", SearchOption.AllDirectories)
If fileNames.Contains(txtfile.Name, StringComparer.OrdinalIgnoreCase) Then
curFilename = fileNames.First(Function(filename) filename.Equals(txtfile.Name, StringComparison.OrdinalIgnoreCase))
Using sr As StreamReader = txtfile.OpenText
Using sw As New StreamWriter(Path.Combine(topDir.FullName, curFilename), append:=True, encoding:=Encoding.Default, bufferSize:=128)
sw.WriteLine(sr.ReadToEnd)
End Using ' sw
End Using ' sr
End If
Next txtfile
Next subDir
Next topDir
Ahora bien en el formulario que usa ese script hay un selector que indica dos opciones A y B; donde si la opción B es la que ha sido seleccionada es nesario buscar en dos archivos particulares una palabra y cambiarla por otra, entiendo que la funcion sería mas o menos así:
Private Sub ReemplazaTexto(ByVal Fichero As String, ByVal Texto_Busca As String, ByVal Texto_Reemplaza As String)
Dim Reader As New StreamReader(Fichero)
Dim Content As String = Reader.ReadToEnd()
Reader.Close()
Content = Regex.Replace(Content, Texto_Busca, Texto_Reemplaza)
Dim Writer As New StreamWriter(FicheroNuevo)
Writer.Write(Content)
writer.Close()
End Sub
Ahora lo que quedaría es que despues que ejecuto el merge es preguntar que opción del combobox está seleccionada, que sería así:
'El usuario selecciono la opcion para cambiar texto
If ComboBox1.SelectedIndex = 0 Then
reemplazatexto("AR.txt","TXTB1","TXTN")
reemplazatexto("AR.txt","TXTB2","TXTN")
reemplazatexto("BR.txt","TXTB1","TXTN")
reemplazatexto("BR.txt","TXTB2","TXTN")
Else
return
End If
Creo que así sería; pero si alguien tiene uuna mejor idea será bien recibida.
Desde ya mil gracias.