2009-10-27 4 views
2

J'ai besoin de copier les 16 lignes du bas d'un fichier texte vers un autre fichier texte. J'ai besoin de faire cette procédure pour tous les clients. À l'emplacement du client, le fichier texte sera commun, mais les 16 lignes du bas sont importantes pour la confirmation de l'installation du paquet.Fichier BAT pour lire et copier les 16 lignes du bas d'un fichier texte vers un autre?

+0

duper possible: http://stackoverflow.com/questions/523181/cmd- exe-batch-script-to-display-last-10-lignes-from-a-txt-file – Joey

Répondre

5

La commande more peut être utilisé pour extraire les n dernières lignes:

  1. Si un fichier, Somefile.txt, contient 2000 lignes, puis les 16 dernières lignes peuvent être extraites avec:

    more /e +1984 someFile.txt > lastLines.txt 
    
  2. Le nombre de lignes somefile.txt peut trouver que:

    for /f %%i in ('find /v /c "" ^< someFile.txt') do set /a lines=%%i 
    
  3. L'appel de more devient alors:

    set /a startLine=%lines% - 16 
    more /e +%startLine% someFile.txt > lastLines.txt 
    
1

Vous pouvez télécharger les ports DOS de la plupart des commandes Unix (par exemple here - choisir un ensemble de commandes comme ça comprend tail)

Après le téléchargement, il suffit d'utiliser tail -16 filename.txt

L'avantage (pour compenser l'effort de téléchargement/décompactage) est que vous obtenez tout un tas d'excellents outils de ligne de commande Unix à utiliser.

+0

Je recommande les ports GNU http://gnuwin32.sourceforge.net/packages.html – ghostdog74

0

J'adapté ce code utile pour ajouter ensemble 51 fichiers et conserver l'en-tête 12 ligne du premier fichier comme suit:

REM Append 51 files and retain 12 line header of first file 
REM ------------------------------------------------------ 

REM Set number of files to combine  
set Nmbrfls=51 

REM copy the first file with the header 
copy file_1.txt combined.txt 

REM Loop through the other 50 files (start at #2) appending to the combined 
REM file using a temporary file to capture all but the the 12 header lines 
REM than append the temporary file to the combined on each loop 

for /l %%i in (2,1,%Nmbrfls%) do (
more /e +13 file_%%i.txt > temp.txt 
copy /b combined.txt + temp.txt combined.txt 
del temp.txt 
) 
Questions connexes