PDA

View Full Version : Software per unire file


franksisca
24-08-2006, 12:05
Ragazzi, ho circa 200 file txt, e dovrei mettere il contenuto di tutti questi file in un unico file txt.
Sapreste consigliarmi qualcosa di già fatto???

Marco Giunio Silano
24-08-2006, 14:01
Ragazzi, ho circa 200 file txt, e dovrei mettere il contenuto di tutti questi file in un unico file txt.
Sapreste consigliarmi qualcosa di già fatto???

lo facevo all'albore dei tempi con il dos e bastava fare copy c:\<directory con i file>\*.* <nomefile>.txt
Funzionava ;) all'epoca con il 3.30.

franksisca
24-08-2006, 14:04
ok, provo, e se va bene, GRAZIE

Marco Giunio Silano
24-08-2006, 14:14
ok, provo, e se va bene, GRAZIE

se non va, scriviti due righe di codice e via! append append append.... :uh:

franksisca
24-08-2006, 15:15
se non va, scriviti due righe di codice e via! append append append.... :uh:
và.
Il codice lo avevo fatto, solo che impegava troppo tempo, in effetti questo va bene, il tempo è assai lo stesso, ma perchè sono grossi file.

Comunque grazie mille.

Marco Giunio Silano
24-08-2006, 15:46
và.
Il codice lo avevo fatto, solo che impegava troppo tempo, in effetti questo va bene, il tempo è assai lo stesso, ma perchè sono grossi file.

Comunque grazie mille.

Non ho capito, ha funzionato? Se sì, sono contento... :)
Ciao e buona giornata!

franksisca
24-08-2006, 15:57
Non ho capito, ha funzionato? Se sì, sono contento... :)
Ciao e buona giornata!
si funziona, il codice che avevo fatto io impegava troppe risorse, basti pensare che la conversione in pdf mi ha dato 5600 pagine.......per questo cercavo qualcosa di già fatto.

Comunque grazie.

bettola
03-04-2008, 12:48
il comando DOS è valido, ma in che ordine unisce i file?

Zumpagnau
20-10-2009, 19:03
Scusate se riesumo questo topic ma piuttosto di aprirne un altro..
Vi illustro il problema :mc:

Ho 2 file .txt e devo aggiungere al file 1 stringhe di parole che contiene solo il testo 2

esempio:

file 1

red 3
green 1
x 0
y 0

file 2

red 2
green 6
blue 5
x 1024


//*****************

Combinato.txt

red 3
green 1
blue 5
x 0
y 0

Combinato2.txt

red 2
green 6
blue 5
x 1024
y 0

//*****************

// ps. non conta l'ordine in cui mette le linee di testo //


Scusate la poca chiarezza della domanda :doh: qualcuno conosce un programmino?? :help:

GRAZIE!!! :O

john_revelator
20-10-2009, 20:32
Ma la struttura è sempre quella, cioè ogni riga è costituita da 2 "parole", una stringa di testo e un valore numerico e a te interessa solo confrontare il testo?

wizard1993
21-10-2009, 13:39
...
trovati un amico che sappia programmare e sei apposto, i vuole 10 minuti a realizzare un programma che fa più o meno quello che ti serve, ma dubito tu trovi un anima tanto pia qui sul forum

john_revelator
21-10-2009, 18:09
Tutto sono tranne che un'anima pia, comunque provo lo stesso ad aiutarti. :)
Ho provato a risolvere il tuo problema tramite la powershell. Per le informazioni relative alla sua installazione ti rimando a questo link


http://forum.html.it/forum/showthread.php?s=&postid=12157627#post12157627

Visto che può risultare scomodo lavorare da shell con script più lunghi di una sola riga ti consiglio di scaricare l'editor powershell analyzer (è pure standalone) da qui

http://www.shelltools.net/

Raggiungi la cartella contenente i due file come faresti col classico prompt dei comandi e poi lancia questo script


# creo nella cartella dove ci sono i miei due file un terzo file, identico a file1.txt
copy-Item file1.txt -destination file3.txt
# recupero il contenuto dei due file rimuovendo tutte le cifre finali lasciando solo la parte letterale
$file1 = (Get-Content file1.txt | % {$_ -replace "\d+$", ""})
$file2 = (Get-Content file2.txt | % {$_ -replace "\d+$", ""})
# confronto gli oggetti per trovare le parti testuali del file2 non presenti nel file1
$diff = compare-Object $file1 -differenceobject $file2
# ciclo il file2 riga per riga
foreach($riga in gc file2.txt) {
# ciclo ogni singola riga delle differenze trovate
foreach($row in $diff) {
# se la riga del file2 inizia come la riga contenuta nell'array delle differenze...
if ($riga.startswith($row.inputobject)) {
# ... allora ne aggiungo il contenuto al file3
add-Content file3.txt -value $riga
}
}
}


L'ho scritto al volo e testato su file di poche righe simili al tuo esempio ma mi sembra che faccia quanto hai richiesto. Fammi sapere. :)

Zumpagnau
01-11-2009, 18:23
Scusatemi non trovavo piu' il topic!! Grazie mille ora provo :sofico: :)



ADD:
Testato!! Quasi giusto solo che non mi metteva i caratteri non comuni!! Mi sono letto una guida, cerco di cavarmela da solo!
Grazie mille per il supporto!!
:)

john_revelator
01-11-2009, 21:50
Se spieghi meglio che difficoltà incontri si prova ad aiutarti. :)

Zumpagnau
03-11-2009, 16:40
risolto!! Grazie mille ancora veramente :)

Thommino
15-12-2010, 20:24
Ciao a tutti mi aggiungo a questo thread, perchè la mia necessità è sempre la stessa, ma con caratteristiche diverse.

Ho due file:
1 File contiene:
TitoloA,TitoloB

2File contiene:
ti,toloa1
tit,oloa2
tito,loa3

File Unione:
TitoloA,TitoloB
ti toloa1,
tit oloa2,
tito loa3,

Vorrei specifiare il nome del file1 e file2, senza usare *.*. In più dovrebbe aggiungere la , alla fine di ciascuna riga. In più deve eseguire una replace della "," con " "
Idee semplici? Non so fare script, ma devo scedulare l'operazione ogni giorno in modalità batch
Grazie

Ho provato a fare un file.bat
copy /b file1.txt+file2.txt completo.txt

E l'append funziona bene, ma adesso il replace sul completo e la , a fine riga?


---------------------------------------------------------------------------------
Copiando un po' il lavoro degli altri su internet ho fatto così:
1) Creato due vbs
# sostituisce la virgola
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "file2.txt"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If Len(strLine)> 0 Then
strLine = Replace(strLine,","," ")
End If
WScript.Echo strLine
Loop

#sostituisce il carattere a capo [NON FUNZIONA]
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "file2_comma.txt"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If Len(strLine)> 0 Then
strLine = Replace(strLine,vbCrLf,","&vbCrLf)
End If
WScript.Echo strLine
Loop


A questo punto utilizzare un bat che fa:
cscript /nologo myreplace.vbs > file2_comma.txt
ren file2.txt file2_comma.txt
cscript /nologo myreplace2.vbs > file2_comma_Chr13.txt
ren file2_comma.txt file2_comma_Chr13.txt
copy /b file1.txt+file2_comma_Chr13.txt completo.txt


A parte il fatto che lo script 2 non funziona, l'operazione così com'è non è performante.Devo ciclare su file da 100.000 righe e diversi mb. [I due scipt li posso anche unire ma deve funzionare il secondo prima!