![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Подсчет количества файлов, вывод суммы, минимального и максимального номера файла |
|
Любой язык - [решено] Подсчет количества файлов, вывод суммы, минимального и максимального номера файла
|
Ветеран Сообщения: 558 |
Здравствуйте, не давно создавал тему по подсчету файлов http://forum.oszone.net/thread-341211.html
Нужен еще один вариант вывода для некоторых путей.. необходимо указать не только количество и сумму, но еще минимальный и максимальный номер файла. Пример: Я задаю в скрипте два пути и имена файлов (по маске). C:\\test\*start*.* C:\\krug\*aist*.* Папки с файлами: test krug В результате, скрипт выводит на экран пути, минимальный и максимальный номер файла, а также количество найденных файлов, а в самом низу сумму всех таких файлов Известно: номер всегда четырехзначный для одного пути номер будет либо в начале, либо в конце, т.е. если мы указали путь C:\\test\*start*.*, то по этому пути будут присутствовать другие файлы, а также файлы типа NNNNstart или startNNNN (только один какой - то вариант). Кстати, для каждого пути, мы всегда знаем где эти номера будут располагаться (в начале или конце), поэтому при необходимости мы всегда можем помечать это в скрипте ![]() |
|
Отправлено: 04:39, 08-07-2019 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать CMD1
@Echo Off cls Set /A N=0 Call :NFiles "Z:\Soft_In\start\????start.*" "[0-9][0-9][0-9][0-9]start\..*" "N" "M1" Call :NFiles "Z:\Soft_In\start\start????.*" "start[0-9][0-9][0-9][0-9]\..*" "N" "M2" Call :NFiles "Z:\Soft_In\start\start1????.*" "start1[0-9][0-9][0-9][0-9]\..*" "N" "M3" Echo %N% Pause Exit /B :NFiles SetLocal Set /A N=0 Set "M1=" Set "MN=" FOR /F "usebackq delims=" %%a IN (`2^>nul Dir %1 /B /O:N /A:-D ^|findstr /I /R /C:"^%~2"`) DO ( Call Set /A N+=1 If Not Defined M1 Call Set "M1=%%a" Call Set "MN=%%a" ) If %N%==0 (Set "M1=%~nx1" &Set "MN=%~nx1") Echo %1 - %M1% -^> %MN% = %N% EndLocal &(Set /A %~3+=%N%) &(Set %~4=%1 - %M1% -^^^> %MN% = %N%) Exit /B CMD2
@Echo Off cls Set /A N=0 Call :NFiles "Z:\Soft_In\start\????start.*" "[0-9][0-9][0-9][0-9]start\..*" 4 "N" "M1" Call :NFiles "Z:\Soft_In\start\start????.*" "start[0-9][0-9][0-9][0-9]\..*" 4 "N" "M2" Call :NFiles "Z:\Soft_In\start\stagrt????.*" "stagrt[0-9][0-9][0-9][0-9]\..*" 4 "N" "M3" Echo %N% Pause Exit /B :NFiles SetLocal Set /A N=0 Set "Reg=%~2" If "%Reg:~0,5%"=="[0-9]" (Set /A Reg=1) Else (Set /A Reg=2) Set "M1=" Set "MN=" FOR /F "usebackq delims=" %%a IN (`2^>nul Dir %1 /B /O:N /A:-D ^|findstr /I /R /C:"^%~2"`) DO ( Call Set /A N+=1 If Not Defined M1 Call Set "M1=%%~na" Call Set "MN=%%~na" ) If %N%==0 (Set "M1=%~n1" &Set "MN=%~n1") If %Reg%==1 (Call Set "M1=%%M1:~0,%3%%") Else (Call Set "M1=%%M1:~-%3%%") If %Reg%==1 (Call Set "MN=%%MN:~0,%3%%") Else (Call Set "MN=%%MN:~-%3%%") Echo %1 - %M1% -^> %MN% = %N% EndLocal &(Set /A %~4+=%N%) &(Set %~5=%1 - %M1% -^^^> %MN% = %N%) Exit /B CMD3
@Echo Off cls Set /A N=0 Call :NFiles "Z:\Soft_In\start\????start.*" "[0-9][0-9][0-9][0-9]start\..*" 4 "N" "M1" Call :NFiles "Z:\Soft_In\start\start????.*" "start[0-9][0-9][0-9][0-9]\..*" 4 "N" "M2" Call :NFiles "Z:\Soft_In\start\st22art????.*" "st22art[0-9][0-9][0-9][0-9]\..*" 4 "N" "M3" Echo %N% Pause Exit /B :NFiles SetLocal Set /A N=0 Set "Reg=%~2" If "%Reg:~0,5%"=="[0-9]" (Set /A Reg=1) Else (Set /A Reg=2) Set "M1=" Set "MN=" FOR /F "usebackq delims=" %%a IN (`2^>nul Dir %1 /B /O:N /A:-D ^|findstr /I /R /C:"^%~2"`) DO ( Call Set /A N+=1 If Not Defined M1 Call Set "M1=%%~na" Call Set "MN=%%~na" ) If %N%==0 (Set "M1=%~n1" &Set "MN=%~n1") If %Reg%==1 ( Call Set "NM1=%%M1:~%3%%" Call Set "M1=%%M1:~0,%3%%" Call Set "MN=%%MN:~0,%3%%" ) Else ( Call Set "NM1=%%M1:~0,-%3%%" Call Set "M1=%%M1:~-%3%%" Call Set "MN=%%MN:~-%3%%" ) Echo %~dp1%M1% - %MN% %NM1% %N% EndLocal &(Set /A %~4+=%N%) &(Set %~5=%~dp1%M1% - %MN% %NM1% %N%) Exit /B |
------- Последний раз редактировалось megaloman, 08-07-2019 в 13:17. Отправлено: 12:24, 08-07-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Спасибо, все три варианта запустил, выбрал один
![]() А не подскажите, что такое "M1" "M2" "M3" ? Я везде сделал "M1", вроде как все нормально работает, или нужно обязательно поменять цифры? |
Отправлено: 01:17, 10-07-2019 | #3 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Alexander_88, в переменных "M1" "M2" "M3" сообщения для каждого пути. По началу я хотел сделать вывод всех сообщений после вызова всех процедур, например:
Echo %M1% Echo %M2% Echo %M3% Echo %N% Но потом сделал вызов сообщений внутри процедуры, а эти переменные оставил про запас. Естественно, если Вы везде указываете имя одной и той же переменной, например, M1, то сохранится только одно значение для последнего вызова процедуры. Не обязательно имя переменной писать "M1" "M2" "M3", можно, например,"start" "aist" и т д. и затем Echo %start% Echo %aist% либо Echo %start% %aist% при этом Echo в процедуре можно убрать. |
------- Отправлено: 07:16, 10-07-2019 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Подсчет количества файлов в разных папках и вывод суммы количества | Alexander_88 | Скриптовые языки администрирования Windows | 2 | 08-07-2019 03:37 | |
Доступ - Увеличение максимального количества подключенных юзеров | ReAL | Microsoft Windows 7 | 1 | 17-01-2013 11:16 | |
Разное - [решено] Выбор уникальных значений из списка, подсчет их количества и суммы | Farrukhjon | Microsoft Office (Word, Excel, Outlook и т.д.) | 32 | 09-08-2012 09:16 | |
VBS/WSH/JS - Подсчет количества ini файлов в папке | XXXp | Скриптовые языки администрирования Windows | 14 | 10-04-2012 02:06 | |
Интернет - Увеличение максимального количества сетевых подключений - как? | DIMM DDR | Microsoft Windows 7 | 6 | 25-01-2010 13:38 |
|