Adicione uma nova linha no arquivo de texto sem alterar o formato

0

Este é o meu script:

@ECHO OFF 
SET origfile="C:\Documents and Settings\user\Desktop\test1\before.txt" 
SET tempfile="C:\Documents and Settings\user\Desktop\test1\after.txt" 
SET insertbefore=4 
FOR /F %%C IN ('FIND /C /V "" ^<%origfile%') DO SET totallines=%%C 

<%origfile% (FOR /L %%i IN (1,1,%totallines%) DO ( 
  SETLOCAL EnableDelayedExpansion 
  SET /P L= 
  IF %%i==%insertbefore% ECHO( 
  ECHO(!L! 
  ENDLOCAL 
)
) >%tempfile% 
COPY /Y %tempfile% %origfile% >NUL 
DEL %tempfile% 
pause 

Eu salvei isso como run1.bat . Depois de correr, eu tenho um problema com o formato, está fora de ordem.

Arquivo original:

header 1<--here got tab delimited format--><--here got tab delimited format--> 
header 2<--here got tab delimited format--><--here got tab delimited format-->
header 3<--here got tab delimited format--><--here got tab delimited format-->
details 1
details 2 

Saída:

header 1<--tab delimited is missing--><--tab delimited is missing--> 
header 2<--tab delimited is missing--><--tab delimited is missing-->
header 3<--tab delimited is missing--><--tab delimited is missing-->

details 1
details 2 
    
por newbie18 13.09.2011 / 10:03

1 resposta

0

Se você tiver Perl instalado, poderá usar o seguinte comando em uma janela do Prompt de Comando:

perl -p -i -e "print qq(\n) if $. == 4" filename.txt

Tenho certeza de que você pode fazer isso com scripts em lote, mas às vezes acho que não vale a pena o esforço.

Atualização 1:

Para transformar o texto acima em um arquivo que pode ser usado como seu arquivo bat você pode criar um arquivo de script "insert4.pl" como segue

#!perl
use strict;
use warnings;

open my $in, '<', 'before.txt'    or die "can't read before.txt because $!\n";
open my $out, '>', 'after.txt'    or die "can't write after.txt because $!\n";    

while (<$in>) {
  print $out $_;
  print "\n" if $. == 4;
}

close $out;
close $in;

unlink 'before.txt'               or die "can't delete before.txt because $!\n";
rename 'after.txt', 'before.txt'  or die "can't rename temp file because $!\n";

(não testado)

Atualização 2:

Quando você instala o interpretador Perl, ele deve associar automaticamente a extensão do arquivo .pl aos scripts Perl para serem executados pelo interpretador Perl. Você deve ser capaz de confirmar isso com assoc .pl , se ele diz ".pl = perlscript", verifique ftype perlscript .

O instalador também deve adicionar a localização do intérprete do perl ao comando search PATH usado pelo prompt de comando do Windows.

Os scripts Perl devem ser salvos em arquivos com uma extensão de nome de arquivo de .pl .

Se tudo acima estiver OK, você pode executar scripts perl apenas digitando o nome de arquivo myscript.pl caso contrário, você terá que informar explicitamente ao Windows que interpretador usar: perl myscript.pl ou, no pior dos casos, C:\strawberry\perl\bin\perl myscript.pl .

    
por 13.09.2011 / 10:39

Tags