2014-12-16 1 views
1

У меня есть файл с x строками, и я бы хотел перезаписать этот файл только с помощью первых 5 строк, удаляющих остальные. Мне нужно сделать это с помощью пакетного скрипта. Любая помощь по этому вопросу будет принята с благодарностью.Batch Script для перезаписывания файла с помощью первых 5 строк

Благодаря Кумар

ответ

2
@echo off 

set "file_to_process=E:\somefile.txt" 

set "first_n_lines=5" 

break>"%temp%\empty"&&fc "%temp%\empty" "%file_to_process%" /lb %first_n_lines% /t |more +4 | findstr /B /E /V "*****" >5.txt 


rem move /y 5.txt "%file_to_process%" 

удалить rem на последней строке, если 5.txt файл, что вы хотите.

+0

Спасибо, работает как шарм. – kumar

+1

Ох - Я не помню, чтобы когда-либо видел это раньше. Конечно, он терпит неудачу, если какая-либо строка источника '*****', а MORE повреждает символы табуляции. Но мне нравится этот хак! – dbenham

+0

@dbenham - 10x. Это можно поместить в 'FOR/F' с помощью« skip = 4 », чтобы избежать« большего », но это сделает код более подробным (и мне больше нравится, что это почти удобный однострочный шрифт). – npocmaka

3

Пока каждый из первых 5 строк длиной < = 1021 байт, и нет никаких управляющих символов в конце любого из 5 линий:

@echo off 
setlocal enableDelayedExpansion 
<"test.txt" >"test.txt.new" (
    for /l %%N in (1 1 5) do (
    set "ln=" 
    set /p "ln=" 
    echo(!ln! 
) 
) 
move /y "test.txt.new" "test.txt" >nul 


Или вы могли бы использовать мой JREPL.BAT utility - гибридный JScript/пакетный скрипт, который запускается на любой машине Windows с XP. Это решение хорошо работает с любым файлом размера, если ни одна строка не превышает 2 гигабайт - без каких-либо ограничений.

JREPL.BAT действительно предназначен для поиска и замены регулярных выражений в текстовых файлах, но удобно использовать его для получения головы или хвоста файла.

jrepl "^" "" /jbegln "quit=(ln>=5)" /f test.txt /o - 
+0

EDIT - Ой, я забыл критический 'setlocal enableDelayedExpansion' – dbenham

+0

EDIT - Добавлено решение JREPL.BAT – dbenham

Смежные вопросы