1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| @echo off
setlocal enableextensions enabledelayedexpansion
if "%1"=="" goto help
REM Compter le nombre de lignes avant tout.
echo Analyzing "%1"...
set nblines=0
for /F "delims=" %%I in ('type "%1"') do set /a nblines+=1
REM On divise par deux.
set /a line=%nblines% / 2
echo Done: input file has %nblines% lines, will cut at line %line%.
REM Découpage du fichier en deux parties.
type NUL> "%1.part1"
REM Première partie.
echo Extracting first part...
set current=0
for /F "delims=" %%I in ('type "%1"') do (
set /a current+=1
if !current! LEQ %line% (
echo %%I>> "%1.part1"
) else (
REM Arrêt de la boucle, pour ne pas sortir les lignes suivantes.
goto :break1
)
)
:break1
echo Done.
echo Extracting second part...
REM Deuxième partie : parcours du fichier d'origine, en sautant "line" lignes.
REM Sauf que là, on fait un fichier par ligne à cause des problèmes de parcours double.
set current=0
for /F "skip=%line% delims=" %%I in ('type "%1"') do (
set /a current+=1
REM Sortie de la ligne.
echo %%I> "%1.part2.!current!"
)
echo Done.
REM Fusion des deux parties.
echo Joining the two parts...
set current=0
type NUL> "%1.joined"
rem echo on
for /F "delims=" %%I in ('type "%1.part1"') do (
set /a current+=1
for /F "delims=" %%J in ('type "%1.part2.!current!"') do (
REM Attention : 5 tabulations entre les deux variables !
REM On pourrait aussi ajouter un pattern reconnaissable.
echo %%I %%J>> "%1.joined"
)
)
REM Suppression des fichiers temporaires.
del /Q "%1.part1" > NUL 2>&1
del /Q "%1.part2.*" > NUL 2>&1
goto :eof
:help
echo Syntax : %0 ^<File^>
echo Will cut the file in two parts, and set the 2nd part as a 2nd column.
echo The resulting file will be named "<File>.joined".
goto :eof |
Partager