Пакетный скрипт Windows для чтения первых 10 строк из журнала сеанса Informatica 10 ГБ - PullRequest
0 голосов
/ 03 декабря 2018

цикл for в пакетной консоли Windows зависает и не работает при обработке огромных файлов размером 10 ГБ, но работает с файлами меньшего размера, менее 1 ГБ.Например,

FOR /F "delims=]" %%A IN (dummy.txt) DO ( 
...code...
)

Мне нужен пакетный скрипт, который будет эффективно считывать первые 10 строк кода из файла журнала сеанса Informatica 10 Гб.Есть ли способ прочитать огромные файлы с помощью пакетного программирования ??

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Попробуйте:

@echo off
setlocal EnableDelayedExpansion

rem Read first 10 lines
(for /L %%i in (1,1,10) do set /P "line[%%i]=") < dummy.txt

rem Process them
for /L %%i in (1,1,10) do (
   echo Line %%i- !line[%%i]!
   FOR /F "delims=]" %%A IN ("!line[%%i]!") DO (
      ...code...
   )
)

PS - я бы поспорил, что этот метод запускается намного быстрее , чем PowerShell!;)

0 голосов
/ 04 декабря 2018

Для чтения из огромного файла вы можете использовать for /F цикл и прервать его, используя goto:

@echo off
set /A "COUNT=0, LIMIT=10"
for /F usebackq^ delims^=^ eol^= %%L in ("huge.txt") do (
    set /A "COUNT+=1" & set "LINE=%%L"
    setlocal EnableDelayedExpansion

    rem // Do something with the current line:
    echo Line !COUNT!: !LINE!

    if !COUNT! geq !LIMIT! goto :QUIT
    endlocal
)
:QUIT

Максимально возможная длинакаждой строки составляет около 8190 байтов или символов.Пустые строки игнорируются for /F и поэтому не учитываются.

0 голосов
/ 03 декабря 2018

Я предлагаю вам использовать powershell для этого.Есть 2 основных метода: Открыть PowerShell.Start, run(search), poweshell.exe.Затем cd в соответствующий каталог и затем выполните:

Get-Content dummy.txt | Select-Object -first 10

или сохраните вышеупомянутое в файле с расширением .ps1 и просто запустите его оттуда.

Если вы по-прежнемуЕсли вы хотите использовать его из пакетного файла, просто сделайте некоторые дополнения, как показано ниже, и сохраните их как .bat или .cmd файл.

powershell -command "& {Get-Content dummy.txt | Select-Object -first 10}"

Если у вас есть powershell 3 или новее, вы можете использовать* встроенная новая функция головы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...