risposta-alla-domanda-sullo-sviluppo-web-bd.com

È necessario combinare molti file in una directory

Ho da 50 a 60 file in una directory che ho bisogno di concatenare in un singolo file su base regolare. 

Ho pensato di usare notepad ++ pensando che probabilmente c'era un plug-in che avrebbe aiutato ma che non era stato in grado di trovarne uno.

Qualche altro pensiero?

39
tnriverfish

Supponendo che si tratti di file di testo (dato che stai usando notepad ++) e che sei su Windows, potresti creare un semplice script batch per concatenarli insieme.

Ad esempio, nella directory con tutti i file di testo, eseguire quanto segue:

for %f in (*.txt) do type "%f" >> combined.txt

Questo unirà tutti i file che corrispondono * .txt in un file chiamato combined.txt.

Per maggiori informazioni:

http://www.howtogeek.com/howto/keyboard-ninja/keyboard-ninja-concatenate-multiple-text-files-in-windows/

80
JYelton

Usa il comando 'copia' di Windows.

C:\Users\dan>help copy
    Copies one or more files to another location.

    COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
         [+ source [/A | /B] [+ ...]] [destination [/A | /B]]

      source       Specifies the file or files to be copied.
      /A           Indicates an ASCII text file.
      /B           Indicates a binary file.
      /D           Allow the destination file to be created decrypted
      destination  Specifies the directory and/or filename for the new file(s).
      /V           Verifies that new files are written correctly.
      /N           Uses short filename, if available, when copying a file with 
                   a non-8dot3 name.
      /Y           Suppresses prompting to confirm you want to overwrite an
                   existing destination file.
      /-Y          Causes prompting to confirm you want to overwrite an
                   existing destination file.
      /Z           Copies networked files in restartable mode.
      /L           If the source is a symbolic link, copy the link to the 
                   target
                   instead of the actual file the source link points to.

    The switch /Y may be preset in the COPYCMD environment variable.
    This may be overridden with /-Y on the command line.  Default is
    to Prompt on overwrites unless COPY command is being executed from
    within a batch script.

    **To append files, specify a single file for destination, but 
    multiple files for source (using wildcards or file1+file2+file3 
    format).**

Quindi nel tuo caso:

copia * .txt destination.txt

Concatena tutti i file .txt in ordine alfabetico in destination.txt

Grazie per avermelo chiesto, ho imparato qualcosa di nuovo!

62
dwerner
copy *.txt all.txt

Questo concatenerà tutti i file di testo della cartella in un file di testo all.txt

Se hai altri tipi di file, come i file sql

copy *.sql all.sql
10
abhishek

Sì, è disponibile un plugin chiamato "combina" per notepad ++. Link:. >> Combina plugin per Notepad ++

Puoi installarlo tramite plugin manager. Un ulteriore vantaggio di questo plugin è: "È possibile mantenere la sequenza di file durante l'unione, è in base alla sequenza di apertura dei file aperti (vedere le schede)".

5
Md. Monirul Alom

Se ti piace farlo per i file aperti su Notepad ++, puoi usare il plugin Combine: http://www.scout-soft.com/combine/

1
vahid kh

potresti usare lo script di PowerShell come questo

$sb = new-object System.Text.StringBuilder

foreach ($file in Get-ChildItem -path 'C:\temp\xx\') {
    $content = Get-Content -Path $file.fullname
    $sb.Append($content)
}
Out-File -FilePath 'C:\temp\xx\c.txt' -InputObject $sb.toString()
1
Iain

In Windows utilizzo un semplice comando in un file batch e utilizzo un'attività pianificata per mantenere tutte le informazioni in un solo file. Assicurati di scegliere un altro percorso per il file dei risultati, o Avrai dati duplicati. 

type PathToOriginalFiles\*. Extension> AnotherPathToResultFile\NameOfTheResultFile.Extension

Se hai bisogno di unirti a molti file CSV, una buona cosa da fare è avere l'intestazione in un solo file con un nome come 0header.csv , o un altro nome, in modo che sia sempre il primo file in elenca e assicurati di programmare tutti gli altri file CSV per non contenere un'intestazione.

1
Pedro Oliveira

Ho usato questo script su Windows PowerShell:

ForEach ($f in get-ChildItem *.sql) { type "$f" >> all.sql }
0
asoifer1879

Esiste un comodo strumento di terze parti denominato FileMenu Tools, che offre diversi strumenti per il clic con il tasto destro come estensione di Windows Explorer.

Uno di questi è Split file/Join Parts, che fa e annulla esattamente quello che stai cercando.

Controllalo su http://www.lopesoft.com/en/filemenutools . Naturalmente, è solo Windows, poiché gli ambienti Unix hanno già molti strumenti per farlo.

0
PPC

So che questo è un vecchio post, ma l'ho trovato e ho trovato qualcuno che ha suggerito Total Mail Converter. Sono stato in grado di convertire la mia cartella con 2 file .msg in .txt. Permette anche di convertire in PDF e altri formati popolari.

È un ottimo strumento che mi fa piacere che qualcuno mi abbia suggerito in quanto mi farà risparmiare parecchi giorni.

Cordiali saluti: il mio progetto sta combinando i file .msg in un unico file di testo in modo che possa eseguire uno script per estrarre determinate informazioni dai file (ad es. Email e collegamenti). Invece di file 2k, posso lavorare con uno.

0
Osensnolf