3

Я хочу посчитать количество строк в файле, используя пакет.

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

@echo off
set "file=abc.csv"
set /a x=0
for /f "usebackq delims=" %%p in ("%file%") do (
  echo %x%
  pause>nul
  set /a x=%x%+1
)

Когда я запускаю приведенный выше код, я получаю 0 в качестве вывода. Может кто-нибудь помочь мне разобраться с ошибкой?

2 ответа2

2

Я хочу посчитать количество строк в файле, используя пакет

Конкретное решение

Из командной строки:

F:\test>for /f "usebackq" %b in (`type abc.csv ^| find "" /v /c`) do @echo line count is %b
line count is 1

Из командного файла (countlines.cmd):

@echo off
Setlocal EnableDelayedExpansion
  for /f "usebackq" %%b in (`type abc.csv ^| find "" /v /c`) do (
    echo line count is %%b
    )
  )

Пример:

F:\test>countlines
line count is 1
F:\test>

Гибкое решение

Используйте следующий пакетный файл (countlines.cmd):

@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq" %%a in (`dir /b /s %1`)  do (
  echo processing file %%a
  for /f "usebackq" %%b in (`type %%a ^| find "" /v /c`) do (
    echo line count is %%b
    set /a lines += %%b
    )
  )
echo total lines is %lines%

Заметки:

  • Общее количество строк хранится в %lines% .
  • Пакетный файл поддерживает подстановочные знаки.
  • Твик echo ... команды в зависимости от обстоятельств.

Использование:

countlines filename_expression

Пример:

F:\test>countlines *.csv
processing file F:\test\abc.csv
line count is 1
processing file F:\test\def.csv
line count is 1
total lines is 2

Дальнейшее чтение

1

Простой способ подсчета количества строк в файле в системе Microsoft Windows заключается в использовании следующей команды:

find /v /c "" somefile.txt

Параметр /c считает количество строк, а параметр /v отображает все строки, НЕ содержащие указанную строку. Поскольку нулевая строка, то есть "", обрабатывается как никогда не совпадающая, вы должны увидеть количество строк в отображаемом файле - см. Трюк с командной строкой Stupid: подсчет количества строк в статье stdin в блоге разработчика Microsoft Раймонда Чена, Старая новая вещь для объяснения того, почему это работает, и как ошибка в самой ранней версии MS-DOS команды find стала функцией, которая остается и по сей день. Операционная система MS-DOS была операционной системой для ранних ПК, предоставленных Microsoft задолго до того, как компания создала Microsoft Windows.

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