COPIAR VARIOS ARQ. DE UMA LISTA TXT EM ARQ. UNICO

FAELSAYAJIN 25/03/2013 12:46:44
#421000
Tenho Seleção de Arquivos, e esta salva em um arquivo Temporário TXT para utilização mais a frente e o arquivo fica assim:

[Ô]c:\arquivo01.txt[Ô]
[Ô]c:\arquivo02.txt[Ô]
[Ô]c:\arquivo03.txt[Ô]

Gostaria de uni-los em um arquivo somente, tanto faz se terei de ler o arquivo TXT da Listagem ou pegar direto do Box da Seleção de Arquivos, mas preciso que todos sejam unidos em um arquivo apenas.

Como posso Executa-lo?
TUNUSAT 25/03/2013 13:46:36
#421004
FAELSAYAJIN,

Montei rapidamente este exemplo ... veja se te ajuda:

[ô]--------------------------
Citação:


Private Sub Form_Load()
Dim arq1 As String
Dim arq2 As String
Dim arq3 As String
Dim conteudo As String
Dim conteudo1 As String
Dim conteudo2 As String
Dim conteudo3 As String
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer

arq1 = [Ô]c:\arquivo01.txt[Ô]
arq2 = [Ô]c:\arquivo02.txt[Ô]
arq3 = [Ô]c:\arquivo03.txt[Ô]

n1 = FreeFile()
n2 = FreeFile() + 1
n3 = FreeFile() + 2

Open arq1 For Input As #n1
Open arq2 For Input As #n2
Open arq3 For Input As #n3

conteudo1 = Input(LOF(n1), n1)
conteudo2 = Input(LOF(n2), n2)
conteudo3 = Input(LOF(n3), n3)

Close #n1
Close #n2
Close #n3

conteudo = conteudo1 & [Ô] - [Ô] & conteudo2 & [Ô] - [Ô] & conteudo3

MsgBox conteudo

End Sub


[ô]--------------------------

[][ô]s,
Tunusat.
TUNUSAT 25/03/2013 13:58:17
#421007
FAELSAYAJIN,

Na pressa esqueci de gravar o arquivo destino. Coloque os [Ô]DIM[Ô] no topo e o código restante antes do [Ô]End Sub[Ô]

[ô]--------------------------------------
Dim arq As String
Dim conteudo As String
Dim n As Integer

[ô]...

Open arq For Output As #n
Print #n, conteudo
Close #n
[ô]--------------------------------------


[][ô]s,
Tunusat.
FAELSAYAJIN 25/03/2013 14:36:48
#421012
Grato pelo retorno, Mas não posso usar este, pois não são apenas 3 arquivos podem ser Zilhões, ou apenas dois, no BOX de seleção estão corridos e separados por Ponto e Vírgula: [Ô]c:\arquivo01.txt[Ô];[Ô]c:\arquivo02.txt[Ô];[Ô]c:\arquivo03.txt[Ô];[Ô]c:\arquivo04.txt[Ô];...

E fiz com que fosse salvo um arquivo TXT trocando o ponto e vírgula por quebra, ficando:

[Ô]c:\arquivo01.txt[Ô]
[Ô]c:\arquivo02.txt[Ô]
[Ô]c:\arquivo03.txt[Ô]
[Ô]c:\arquivo04.txt[Ô]
...

Preciso que leia do BOX ou abrindo o arquivo, pois deve ser uma Variável já que não é definido um numero exato de arquivos a serem unidos;

Tentei buscar do Arquivo TXT desta maneira mas Não deu Certo:

Private Sub InitializeComponent()

[ô]
[ô]SelecionaArquivoButton
[ô]
Me.SelecionaArquivoButton.Location = New System.Drawing.Point(294, 30)
Me.SelecionaArquivoButton.Name = [Ô]SelecionaArquivoButton[Ô]
Me.SelecionaArquivoButton.Size = New System.Drawing.Size(32, 23)
Me.SelecionaArquivoButton.TabIndex = 2
Me.SelecionaArquivoButton.Text = [Ô]...[Ô]
Me.SelecionaArquivoButton.UseVisualStyleBackColor = True
[ô]
[ô]SelecionaArquivoBox
[ô]
Me.SelecionaArquivoBox.Location = New System.Drawing.Point(61, 32)
Me.SelecionaArquivoBox.Name = [Ô]SelecionaArquivoBox[Ô]
Me.SelecionaArquivoBox.Size = New System.Drawing.Size(229, 20)
Me.SelecionaArquivoBox.TabIndex = 1
End Sub


[ô]----------------------------------------------------------------------

Private Sub SelecionaArquivoButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SelecionaArquivoButton.Click
Me.AbreArquivos.Multiselect = True
Me.AbreArquivos.Title = [Ô]Selecionar Arquivos para Conversão[Ô]
AbreArquivos.InitialDirectory = [Ô]C:\[Ô]
[ô]filtra para exibir somente arquivos editáveis
AbreArquivos.Filter = [Ô]Arquivos (*.TXT;*.CSV)|*.TXT;*.CSV[Ô]
AbreArquivos.CheckFileExists = True
AbreArquivos.CheckPathExists = True
AbreArquivos.FilterIndex = 2
AbreArquivos.RestoreDirectory = True
AbreArquivos.ReadOnlyChecked = True
AbreArquivos.ShowReadOnly = True

Dim dr As DialogResult = Me.AbreArquivos.ShowDialog()

If dr = System.Windows.Forms.DialogResult.OK Then

For Each arquiv As [String] In AbreArquivos.FileNames
SelecionaArquivoBox.Text += Chr(34) + arquiv + Chr(34) + [Ô]; [Ô]
Next
End If
End Sub
[ô]----------------------------------------------------------------------

Private Sub ............

Dim Caminho As String

Caminho = [Ô]..\Temp\ArquivosSelecionados.txt[Ô]
IO.File.Create(Caminho).Close()

Dim arquivossel = ((((SelecionaArquivoBox.Text.Replace([Ô]; [Ô] + Chr(34), vbCrLf + Chr(34)))).Replace([Ô]; [Ô], [Ô][Ô])))
Dim Insere As New IO.StreamWriter(Caminho)

Insere.WriteLine(arquivossel)
Insere.Close()


[ô] DAQUI PRA BAIXO TA TUDO ERRADO, MAS TENTEI....


Dim Le_Arq_Sel As IO.StreamReader
Dim Li_Arq_Sel As String
Le_Arq_Sel = New IO.StreamReader([Ô]..\Temp\ArquivosSelecionados.txt[Ô])
Li_Arq_Sel = Le_Arq_Sel.ReadLine

Dim Le_Arquivos As IO.StreamReader
Dim Li_Arquivos As String
Le_Arquivos = New IO.StreamReader(Li_Arq_Sel)
Li_Arquivos = Le_Arquivos.ReadLine

Dim Arquivo As String
Arquivo = [Ô]..\Temp\Arquivo.txt[Ô]
IO.File.Create(Arquivo).Close()

Dim Salva_Arq As New IO.StreamWriter(Arquivo)
Salva_Arq.WriteLine(Li_Arquivos)
Salva_Arq.Close()
Le_Arq_Sel.Close()
Le_Arquivos.Close()

End Sub
[ô]----------------------------------------------------------------------

Claro não esta todo script ai, mas acho que já da para entender o que eu preciso, preciso que todos os listado no SelecionaArquivoBox.Text ou no Arquivo [Ô]..\Temp\ArquivosSelecionados.txt[Ô] vão para [Ô]..\Temp\Arquivo.txt[Ô] e Como é variavel não posso Stera Fixo no SCRIPT os arquivos a serem unidos...

Grato e no aguardo.
MARCELO.TREZE 25/03/2013 14:36:56
#421013
de mão beijada eim

FAELSAYAJIN 25/03/2013 15:50:51
#421019
Galera Nunca em um Fórum eu fui tão bem atendido e recepcionado, Valew Mesmo!

Mas preciso eh para o VB Express 2010, sou muito verde ainda no VB e este que enviaste MARCELO, é do VB 6...

Mas fico muito Grato pelo teu empenho em me ajudar.
BRESSAN 26/03/2013 21:27:33
#421095
Cara, você pode criar um arquivo batch, o famoso .bat.

crie um arquivo .bat com o seguinte código dentro.
  
copy arquivo1.txt+arquivo2+txt arquivo.txt


Eu utilizo muito isto, eu crio o arquivo .bat, através do VB.

Att,
Bressan
FAELSAYAJIN 27/03/2013 10:59:38
#421112
BRESSAN, Já pensei nisto, porém os Caminhos e Arquivos podem Conter [Ô]Ç[Ô] ou [Ô]Ã[Ô] ou outro caracter que o MSDOS não reconhece, ASCII, na verdade só me deparei com este Obstaculo por isso, já uso um Bat Complilado em EXE Modo Gost e ele estava se perdendo por conter estes caracteres especiais no nome ou caminho do arquivo.

Bom ficarei no Aguardo.

Grato.
MARCELO.TREZE 27/03/2013 20:35:31
#421150
ja pensou em alterar o nome do arquivo retirando os caracteres especiais, para depois executar seu arquivo bat.

FAELSAYAJIN 28/03/2013 11:27:18
#421175
Eh que não sou eu quem vai usar o programa, é usuário, dai já viu né... Renomear salvar em Pastas sem caracteres especiais, por isso queria unir em um arquivo, em uma pasta temporaria, que o DOS pegaria a União na pasta Indicada e o usuário poderia escolher os arquivos sem problemas ou restrições de nomenclatura.
WHELLNET 01/04/2013 11:36:26
#421335
Se você ainda não sabe quais são os arquivos faça isso primeiro
[ô]Pega Arquivos
Dim sArq() As String
ReDim sArq(0)

sArq(0) = Dir([Ô]C:\Caminho\*.txt[Ô])
While sArq(0) <> [Ô][Ô]
ReDim Preserve sArq(UBound(sArq) + 1)
sArq(UBound(sArq)) = sArq(0)

sArq(0) = Dir
Wend


Ai acima você tem a lista de arquivos, agora é só gravar no arquivo final, neste caso vou aproveira o array
Dim i As Integer
Dim a As integer, b As Integer, xBuffer As String
For i = 1 to Ubound(sArq)
a = FreeFile
Open [Ô]C:\Caminho\[Ô] & sArq(i) As #a
xBuffer = Input(LOF(a), 1)
Close #a

[ô]Adiciona no arquivo final
b = FreeFile
Open [Ô]C:\ArquivoFinal.txt[Ô] For Append As #b
Print #b, xBuffer
Close #b
Next i
Faça seu login para responder