PDA

Visualizza versione completa : Importare + TXT in 1 solo


miciomao
01-06-2005, 12.52.29
Ho una cartella contenente tot file TXT (circa 250 al mese) con dati assolutamente omogenei. Dovrei creare una procedura in VB che ne trasferisca il loro contenuto in un file TXT unico. Naturalmente i file hanno nomi diversi!

Qualcuno sa come?
Grazie ragazzi :)

Gergio
01-06-2005, 13.16.03
nn conosco VB, ma penso potresti procedere cosi':
- fai una lista dei nomi dei file che trovi nella directory
- apri un nuovo file in scrittura
- copi ogni file della lista nel nuovo file

dave4mame
01-06-2005, 13.17.22
da prompt dos non "vale"?

Dav82
01-06-2005, 13.22.07
Originariamente inviato da dave4mame
da prompt dos non "vale"?

(Y)

E se proprio proprio serve, da VB richiamare il batch relativo.

LoryOne
01-06-2005, 13.42.35
Avendo 2 file in formato testo chiamati 1.txt e 2.txt, creo un file somma dei due:


Private Sub Command1_Click()
hfile = FreeFile
Open "c:\Somma.txt" For Append As hfile
Open "c:\1.txt" For Input As hfile + 1
While Not EOF(hfile + 1)
Line Input #hfile + 1, s
Print #hfile, s
Wend
Close hfile + 1
Open "c:\2.txt" For Input As hfile + 1
While Not EOF(hfile + 1)
Line Input #hfile + 1, s
Print #hfile, s
Wend
Close hfile + 1
Close hfile
End Sub


Come vedi a te basta creare una procedura che necessiti come parametri l'handel del file di append, ed il nome del file da aprire.
Richiamerai la stessa procedura per tutti i file che dovrai appendere.

Ps: Leggi la guida di VB sui comandi Open ed Input #

LoryOne
01-06-2005, 13.48.58
Originariamente inviato da dave4mame
da prompt dos non "vale"?

E' un'idea ma quanti caratteri accetta la riga di comando di DOS ?

miciomao
01-06-2005, 14.25.31
Bh grazie a tutti....
Lory quella in parte la soluzione che stavo cercando, il problema odioso infatti era di evitare in qualsiasi modo di andare a scrivere i nomi dei file in qualche modo, dato che ripeto, ogni mesi questi TXT cambiano nome di nuovo e variando anche di numero..
Preferirei scrivere 100 righe di codice in + piuttosto che inserire i nomi file a mano...

Grazie ancora ragazzi ;)

LoryOne
01-06-2005, 15.48.22
Guarda che molto meno complesso di quello che pensi.
Controlla nella guida anche il comando Dir$ ;)

Xtefano
01-06-2005, 17.07.45
Originariamente inviato da LoryOne
Guarda che molto meno complesso di quello che pensi.
Controlla nella guida anche il comando Dir$ ;)

Esatto: vogliamo mettere la FOR ??? (vedi FOR /?)

if exist destinazione.txt del /f destinazione.txt

for %%A in (c:\directory\*.txt) do (
echo ***** FILE %%A >> destinazione.txt
type %%A >> destinazione.txt
echo. >> destinazione.txt
echo ********************** >> destinazione.txt
echo. >> destinazione.txt
)


Questo file batch semplicemente:
* elimina il file destinazione.txt se esiste
* per ogni file *.txt presente in c:\directory
- prepara una intestazione per indicare il file
- scrive il contenuto del file in coda a destinazione.txt
- pone una fila di asterischi come separatore

Attenzione: la variabile del FOR utilizzato al di fuori di un batch va scritta con una % sola anzich due.


edit: un metodo ancora pi idiota se non serve la formattazione anche
copy c:\directory\*.txt destinazione.txt




HTH


Byez

Stefano

dave4mame
01-06-2005, 17.10.28
io invece, che sono notoriamente un "grezzone" (C) babbalea, avrei proposto un

copy /b *.txt totale.asc :)

Dav82
01-06-2005, 17.31.52
Originariamente inviato da dave4mame
io invece, che sono notoriamente un "grezzone" (C) babbalea, avrei proposto un

copy /b *.txt totale.asc :)

Esatto! Motivo del cui sopra "(Y)".

Se i file sono returnati a dovere (hanno un "a capo" a fine file :p), il metodo che provoca zero dico zero sbattimenti :)

miciomao
06-06-2005, 17.24.45
Bueno,
risolto ho provato un p tutti i metodi, adesso vedr quale si adatta di + al programma, sembra che funzionino tutte molto bene.
Grazie a todos ;)