-1

У меня есть папка с несколькими файлами, содержащими записи.

Мне нужен пакетный скрипт Windows, который будет копировать все «имена файлов» в один выходной файл вместе с количеством записей, присутствующих во всех файлах.

3 ответа3

2

Ссылка НАЙТИ Поиск текстовой строки в файле и отображение всех строк, где она найдена.

find /v /c "" *.* > result.txt

Как это устроено

  • /v инвертирует поиск (поэтому, когда мы ничего не ищем, мы находим все строки)
  • /c считает совпадения
  • "" ничего не соответствует
  • *.* поиск по всем файлам
  • > result.txt перенаправить вывод

Ограничения

  • предполагает нормальный разделитель окон конца строки \r\n
  • Хотя FIND может использоваться для сканирования больших файлов, он не обнаружит строку, расположенную более чем в 1070 символах вдоль одной строки (без возврата каретки \r). Это делает его ограниченным для поиска в двоичных или XML-типах файлов.

Чтобы удалить дополнительные - и пустые строки, мы можем заключить указанную выше команду в конструкцию for следующим образом:

for /f "usebackq tokens=2-3" %a in (`find /v /c "" *.*`) do echo %a %b >> result.txt
0

Большое спасибо за ваши ответы. В дополнение к моему первоначальному требованию, сценарий заключается в том, что папка создается (в формате ГГГГММДД) ежедневно в определенном месте. Эта папка содержит несколько файлов с / без записей в нем.

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

Есть ли способ получить это требование?

-1

Просто для списка имен файлов:

dir * /b /s > files.txt

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