![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] вывести количество строк в тхт файлах |
|
|
Любой язык - [решено] вывести количество строк в тхт файлах
|
Ветеран Сообщения: 558 |
Здравствуйте, подскажите пожалуйста как можно посчитать количество строк в тхт файлах?
Есть папка CONTENT, в ней еще куча папок, в которых есть тхт файлы. Я задаю имена файлов, которые мне нужны. (*.txt - все тхт файлы, start.txt - все файлы, которые найдутся с этим названием). Поиск ведется по всем папках, которые входят в папку CONTENT. Далее скрипт выводит список всех файлов, которые он нашел, в виде пути к файлу (каждый путь с новой строки). После каждого пути рядом справа скрипт через дефис выводит количество строк для данного файла. А ниже (после списка всех файлов) скрипт должен вывести сумму всех строк списка. Пример: Я задал файл start.txt Скрипт вывел: |
|
Отправлено: 13:24, 18-09-2015 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:40, 18-09-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Спасибо, все работает
![]() |
Отправлено: 14:31, 18-09-2015 | #3 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Здравствуйте. Подскажите, а можно ли здесь сделать исключения, то есть чтобы какие-то файлы не обрабатывались?
вот такой код использую.. можно ли сделать исключение для нескольких файлов в папке CONTENT ? |
Отправлено: 07:50, 28-10-2021 | #4 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
Примерно так: ...| Foreach {$sum=0} {
if ($_.name -notmatch <regexp>){
$sum += ($i = [IO.File]::ReadAllLines($_.FullName).Count)
"{0} - {1}" -f $_.FullName,$i
}
} {$sum}
Либо в командлете Get-ChildItem, использовать параметр -exclude и в нем уже указать исключаемые файлы (могут использоваться маски). Справка по командлету: === Цитата Alexander_88:
- Здесь надо указывать либо путь к каталогу, либо путь, который должен быть записан в переменной $Path, то бишь использовать надо что-то одно... |
|||
------- Последний раз редактировалось YuS_2, 28-10-2021 в 10:30. Причина: Дополнение Отправлено: 10:11, 28-10-2021 | #5 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать CMD
@Echo Off cls rem Сумма Папка Маска Список исключений если есть Call :Count "NTotal" "C:\OneDrive\work\CONTENT" "*.bat" ""\Dir21\" "\Dir11\1.bat" "2001"" Echo NTotal=%NTotal% pause Exit /B :Count >~Exclude.tmp (For %%m In (%~4) Do Echo %%~m) For /F "usebackq delims=" %%f In (`Xcopy /L /S /EXCLUDE:~Exclude.tmp "%~2\%~3" "%Tmp%\" ^| findstr.exe /C:":"`) Do ( Set /A NF=0 For /F "usebackq tokens=1* delims=:" %%i In (`FindStr /R /N /C:".*" "%%f"`) Do Set /A NF=%%i Call Echo %%NF%% = %%f Call Set /A %~1+=%%NF%% ) Del ~Exclude.tmp Exit /B |
------- Отправлено: 12:57, 28-10-2021 | #6 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 15:29, 28-10-2021 | #7 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать спасибо всем за ответы.
megaloman, подскажите, в подкаталоги скрипт обрабатывает? Делаю к примеру пишет что fileslink.txt не найден.. а если так: тогда нормально.. (файл fileslink.txt находится в папке folder1) |
Отправлено: 01:37, 29-10-2021 | #8 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
У Вас есть, например, "C:\OneDrive\work\CONTENT" и там нет файла "fileslink.txt". XCopy при этом не хочет искать этот файл в подпапках. Если бы файл там был - прекрасно ищет. Ситуация еще интереснее: если в маске файла есть подстановочный знак, например: "fileslink*.txt", то всё прекрасно ищется. Учел этот баг, вот рабочая версия @Echo Off cls rem Сумма Папка Маска Список исключений если есть Call :Count "NTotal1" "C:\OneDrive\work\CONTENT" "*.vbs" ""\Dir21\" "\Dir11\"" Echo +++ NTotal(*.vbs)=%NTotal1% &Echo. Call :Count "NTotal2" "C:\OneDrive\work\CONTENT" "Я21090916.bat" ""\Dir21\" "\Dir11\1.bat" "2001"" Echo +++ NTotal(Я21090916.bat)=%NTotal2% &Echo. Set /A NTotal=%NTotal1%+%NTotal2% Echo === NTotal=%NTotal% pause Exit /B :Count Set /A %~1=0 >~Exclude.tmp (For %%m In (%~4) Do Echo %%~m) Set Comm="Xcopy /L /E /EXCLUDE:~Exclude.tmp "%~2\%~3?" "%Tmp%\" | findstr.exe /I /R /C:"^%~3$"" Echo %3 |>nul 2>&1 FindStr /C:"*" /C:"?" &&Set Comm="Xcopy /L /E /EXCLUDE:~Exclude.tmp "%~2\%~3" "%Tmp%\" | findstr.exe /I /C:":"" For /F "usebackq delims=" %%f In (`%Comm%`) Do ( Set /A NF=0 For /F "usebackq tokens=1* delims=:" %%i In (`FindStr /R /N /C:".*" "%%f"`) Do Set /A NF=%%i Call Echo %%NF%% = %%f Call Set /A %~1+=%%NF%% ) Del ~Exclude.tmp Exit /B |
|
------- Последний раз редактировалось megaloman, 29-10-2021 в 15:11. Отправлено: 14:51, 29-10-2021 | #9 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, теперь все ищет... а если в списке исключений есть файл в таким же именем в определенной папке, его можно исключить? (либо всю папку).
Пробовал так: и так: в обоих случаях скрипт исключает все папки, которые начинаются с 01.. т.е. не только "01 stop start", а еще и "01 folder1" "01 folder2" и т.д. |
Отправлено: 17:31, 29-10-2021 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Скопировать содержимое одного тхт файла столько раз, сколько строк в другом | Alexander_88 | Скриптовые языки администрирования Windows | 4 | 11-06-2015 11:10 | |
VBS/WSH/JS - помогите написать на javascript код для поиска и фильтрации в тхт файле строк. | spiritmen | Скриптовые языки администрирования Windows | 0 | 06-02-2015 23:42 | |
VBS/WSH/JS - Количество примечаний в Word-файлах | Fresh96 | Скриптовые языки администрирования Windows | 9 | 20-03-2014 19:26 | |
VBS/WSH/JS - Удаление строк в INI файлах | gen0m.rsw | Скриптовые языки администрирования Windows | 5 | 27-06-2013 15:03 | |
Сортировщик строк в текстовых файлах. | borison | Программное обеспечение Windows | 2 | 04-02-2007 10:22 |
|