![]() |
вывести количество строк в тхт файлах
Здравствуйте, подскажите пожалуйста как можно посчитать количество строк в тхт файлах?
Есть папка CONTENT, в ней еще куча папок, в которых есть тхт файлы. Я задаю имена файлов, которые мне нужны. (*.txt - все тхт файлы, start.txt - все файлы, которые найдутся с этим названием). Поиск ведется по всем папках, которые входят в папку CONTENT. Далее скрипт выводит список всех файлов, которые он нашел, в виде пути к файлу (каждый путь с новой строки). После каждого пути рядом справа скрипт через дефис выводит количество строк для данного файла. А ниже (после списка всех файлов) скрипт должен вывести сумму всех строк списка. Пример: Я задал файл start.txt Скрипт вывел: Код:
C:\OneDrive\work\CONTENT\test\start.txt - 12 |
PowerShell v4+:
Код:
Get-ChildItem $Path -Include *.txt -File -Recurse | Foreach {$sum=0} {$sum += ($i = [IO.File]::ReadAllLines($_.FullName).Count);"{0} - {1}" -f $_.FullName,$i} {$sum} |
Спасибо, все работает :)
|
Здравствуйте. Подскажите, а можно ли здесь сделать исключения, то есть чтобы какие-то файлы не обрабатывались?
Код:
Get-ChildItem "C:\work\CONTENT" $Path -Include fileslink.txt -File -Recurse | Foreach {$sum=0} {$sum += ($i = [IO.File]::ReadAllLines($_.FullName).Count);"{0} - {1}" -f $_.FullName,$i} {$sum} |
Цитата:
Примерно так: Код:
...| Foreach {$sum=0} { Либо в командлете Get-ChildItem, использовать параметр -exclude и в нем уже указать исключаемые файлы (могут использоваться маски). Справка по командлету: Код:
man Get-ChildItem === Цитата:
Код:
Get-ChildItem "C:\work\CONTENT" $Path ... |
CMD
Код:
@Echo Off |
Powershell:
Код:
$report = dir "C:\OneDrive\work\CONTENT\*.txt" -exclude "*name*" -Recurse |% { |
спасибо всем за ответы.
megaloman, подскажите, в подкаталоги скрипт обрабатывает? Делаю к примеру Код:
Call :Count "NTotal" "C:\OneDrive\work\CONTENT" "fileslink.txt" Код:
Call :Count "NTotal" "C:\OneDrive\work\CONTENT\folder1" "fileslink.txt" |
Цитата:
У Вас есть, например, "C:\OneDrive\work\CONTENT" и там нет файла "fileslink.txt". XCopy при этом не хочет искать этот файл в подпапках. Если бы файл там был - прекрасно ищет. Ситуация еще интереснее: если в маске файла есть подстановочный знак, например: "fileslink*.txt", то всё прекрасно ищется. Учел этот баг, вот рабочая версия Код:
@Echo Off |
megaloman, спасибо, теперь все ищет... а если в списке исключений есть файл в таким же именем в определенной папке, его можно исключить? (либо всю папку).
Пробовал так: Код:
Call :Count "NTotal1" "C:\OneDrive\work\CONTENT" "fileslink.txt" "01 stop start" Код:
Call :Count "NTotal1" "C:\OneDrive\work\CONTENT" "fileslink.txt" "C:\work\CONTENT\01 stop start\fileslink.txt" |
Alexander_88, Была проблема с исключениями папок с пробелами в именах. Исправил, пробуйте.
Код:
@Echo Off Чтобы исключить конкретный файл, то так: "\01 folder1\fileslink.txt" Папок, файлов может быть несколько. В кавычках через пробелы. |
megaloman, Спасибо, работает теперь исключение :)
|
Время: 10:18. |
Время: 10:18.
© OSzone.net 2001-