Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Печать последних 10 строк из txt файла. (http://forum.oszone.net/showthread.php?t=213563)

valen 18-08-2011 14:43 1734532

Печать последних 10 строк из txt файла.
 
Здравствуйте. Помогите пожалуйста с батником.
Нужно что бы из txt файла распечатывалось последние 10 строк на принтер. Или эти строки выводились в другой файл.
Заранее спасибо.

Foreigner 18-08-2011 15:18 1734556

valen,
Последние 10 строк в другой файл
Код:

@echo off
setlocal

for /f %%i in ('type 1.txt ^| find /c /v ""') do set /a skip=%%i-10
1>2.txt more +%skip% 1.txt


valen 18-08-2011 15:55 1734596

Спасибо громадное!

maxpirata 27-01-2016 17:47 2599725

Извините, а как просто удалить 10 последних строк из txt файла?

greg zakharov 27-01-2016 18:25 2599739

"Голым" cmd примерно так:
Код:

@echo off
  setlocal
    for /f %%i in ('find /c /v "" ^< myfile') do set /a "i=%%i-9"
    >out.txt (for /f "tokens=1,* delims=][" %%i in (
      'find /n /v "" myfile'
    ) do (
      if %%i equ %i% goto:eof
      echo:%%j
    ))
  endlocal
exit /b

Если есть sed:
Код:

sed ':a;$!N;1,10ba;P;$d;D' myfile > out.txt
Ну или PowerShell:
Код:

($$ = gc .\myfile)[0..($$.Count - 10)] | Out-File out.txt

maxpirata 28-01-2016 17:16 2600130

такой батник получился. но, только первая часть отрабытывает (brsW860-.txt) - а вторая нет (с файлом brsW860.txt). что не так?
__________________________________________________________________________________________
@echo off
setlocal
for /f %%i in ('find /c /v "" ^< L:\brsW860-.txt') do set /a "i=%%i-7"
>L:\bW860DB.txt (for /f "tokens=1,* delims=][" %%i in (
'find /n /v "" L:\brsW860-.txt'
) do (
if %%i equ %i% goto:eof
echo:%%j
))
endlocal
exit /b

@echo off
setlocal
for /f %%i in ('find /c /v "" ^< L:\brsW860.txt') do set /a "i=%%i-10"
>L:\bW860MB.txt (for /f "tokens=1,* delims=][" %%i in (
'find /n /v "" L:\brsW860.txt'
) do (
if %%i equ %i% goto:eof
echo:%%j
))
endlocal
exit /b
__________________________________________________________________________________________

если раскинуть эти части в разные батники - то режит и тот и тот (отдельно)

а можно как то что бы оно в одном файле было?

Iska 28-01-2016 23:37 2600243

Цитата:

Цитата maxpirata
только первая часть отрабытывает (brsW860-.txt) - а вторая нет (с файлом brsW860.txt). что не так? »

«Не так» — «exit /b» в середине пакетного файла.

maxpirata 29-01-2016 10:23 2600332

не помогло..

отрабатывает только первая часть

может там как то одинаковые имена переменных? (или типо того...)

Iska 29-01-2016 10:38 2600338

Значит, второе «не так» — в условии:
Цитата:

Цитата maxpirata
if %%i equ %i% goto:eof »

Надо смотреть, что с этим делать.

maxpirata 01-02-2016 11:31 2601325

а что это за условие? if %%i equ %i%

можно ли вообще удалить эту строку? - if %%i equ %i% goto:eof


Время: 09:16.

Время: 09:16.
© OSzone.net 2001-