Это мой сценарий:

@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 

Я сохранил это как run1.bat . После запуска у меня проблема с форматом, он вышел из строя.

Исходный файл:

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 

Выход:

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 

1 ответ1

0

Если у вас установлен Perl , вы можете использовать следующую команду в окне командной строки:

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

Я уверен, что вы можете сделать это с помощью пакетных сценариев, но иногда я думаю, что это не стоит усилий.


Обновление 1:

Чтобы превратить все вышеперечисленное в файл, который можно использовать как ваш bat-файл, вы можете создать файл сценария "insert4.pl" следующим образом

#!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";

(Непроверенные)


Обновление 2:

Когда вы устанавливаете интерпретатор Perl, он должен автоматически связывать расширение имени файла .pl со скриптами Perl, которые будут запускаться интерпретатором Perl. Вы должны быть в состоянии подтвердить это с помощью assoc .pl Если он говорит ".pl = perlscript", проверьте ftype perlscript .

Установщик должен также добавить местоположение интерпретатора Perl в PATH поиска команд, используемый в командной строке Windows.

Скрипты Perl должны быть сохранены в файлах с расширением имени файла .pl .

Если все вышеперечисленное в порядке, вы можете запустить сценарии perl, просто набрав их имя файла myscript.pl противном случае вам придется явно указать Windows, какой интерпретатор использовать: perl myscript.pl или в худшем случае C:\strawberry\perl\bin\perl myscript.pl .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .