O seguinte funciona bem na linha de comando para a maioria das circunstâncias
(for %F in (test1.txt test2.txt) do @more +1 "%%F") >test3.txt
Duplique as porcentagens se você usar o comando em um script em lote.
O acima tem as seguintes limitações
- Cada arquivo de origem deve ter menos de 64k linhas, caso contrário, ele será interrompido.
- Quaisquer caracteres de tabulação serão convertidos em uma sequência de espaços
- Eu acho que há pelo menos uma outra restrição, mas minha memória me falha (talvez bytes nulos convertidos para uma nova linha ??)
@echo off
setlocal disableDelayedExpansion
>test3.txt (
for %%F in (test1.txt test2.txt) do for /f "skip=1 delims=" %%A in (
'findstr /n "^" "%%F"'
) do (
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln:*:=!
endlocal
)
)
Meu utilitário JScript / batch híbrido JREPL.BAT pode lidar com isso bem . É um exagero, mas vai eficientemente fazer o trabalho, mesmo com arquivos muito grandes.
O JREPL.BAT é um processador de texto de expressões regulares de propósito geral, com muitas opções. É um script puro que é executado nativamente em qualquer máquina Windows do XP em diante.
O seguinte irá funcionar na linha de comando.
>test3.txt (for %F in (test1.txt test2.txt) do @JREPL "^.*" "ln>1?$0:false" /jmatch /f "%F")
Se usado dentro de um script em lote, você deve usar CALL JREPL e dobrar as porcentagens:
@echo off
>test3.txt (for %%F in (test1.txt test2.txt) do call JREPL "^.*" "ln>1?$0:false" /jmatch /f "%%F")