![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Двойное условие в IF |
|
|
CMD/BAT - [решено] Двойное условие в IF
|
Пользователь Сообщения: 62 |
Доброго дня!
Мне необходимо найти файл с максимальным размером определенного расширения среди всех файлов в каталоге и его подкаталогах. Ранее с похожей задачей мне тут помогли и тот скрипт я взял за основу. Сам алгоритм предельно ясен, но вот как в подпрограмме объединить две проверки в IF в одну - меня начинает клинить. Вот что я "родил": @ECHO Off ::задается целевая директория SET MyDir=C:\lab1\wingraf ::задается расширение файлов, размер которых будет учитываться SET Ras=.gif ::вызывается подпрограмма _subdir SET /a max = 0 Call :_subdir %MyDir% %Ras% ::вывод на экран сообщений ECHO Max size of %Ras%-file = %Size% ECHO Name this file - %Name% Pause>Nul Exit :_subdir ::перебераем файлы в целевой директории и ее подкаталогах и если их расширение соответстует заданному, то проверяем на максимальный размер FOR /R %1 %%s IN (*) DO IF %%~xs==%2 (if %%~zn GEQ %max% (SET %Size% = %%~zn SET %Name% = %%~ns) EXIT /B |
|
Отправлено: 23:48, 11-05-2013 |
Ветеран Сообщения: 1759
|
|
Последний раз редактировалось Foreigner, 12-05-2013 в 00:33. Причина: для рекурсивного dir-a сортировка /os не подходит Отправлено: 00:16, 12-05-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Foreigner, вариант рабочий, но хотелось бы, чтобы в качестве результата выводилось именно имя файла и его размер.
|
Отправлено: 00:34, 12-05-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата kelevara:
|
|
Отправлено: 01:57, 12-05-2013 | #4 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Iska, указанная программа выводит на экран полный путь к самому большому файлу указанного расширения. А про его размер ничего не говорит, к сожалению.
|
|
Отправлено: 09:37, 12-05-2013 | #5 |
Ветеран Сообщения: 1759
|
kelevara,
Попробуйте еще раз, второй вариант. От 0:33. |
Отправлено: 10:03, 12-05-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата kelevara:
Имя и размер ![]() |
|
Последний раз редактировалось Iska, 12-05-2013 в 17:31. Причина: А, кстати — «/a:-d» ;). Отправлено: 16:10, 12-05-2013 | #7 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать @Echo off cls Set Where=E:\Audio Set Ext=mp3 Set /A S=-1 FOR /F "usebackq delims=" %%d IN (`Dir "%Where%\" /B /S /A:D 2^>nul`) DO Call :ForSize "%%d\*.%Ext%" Echo %S% %Name% GoTo :Eof :ForSize FOR /F "usebackq delims=" %%f IN (`Dir %1 /B /S /A:-D /O:-S 2^>nul`) DO ( If %S% LSS %%~zf Set S=%%~zf&Set Name=%%f GoTo :Eof ) |
------- Последний раз редактировалось megaloman, 12-05-2013 в 19:02. Отправлено: 17:15, 12-05-2013 | #8 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать kelevara! "Верным путём идёте, товарищ!" Просто у Вас несколько неточностей. Вот так работает:
@ECHO OFF ::задается целевая директория SET MyDir=C:\lab1\wingraf ::задается расширение файлов, размер которых будет учитываться SET Ras=.gif ::вызывается подпрограмма _subdir SET Size=0 CALL :_subdir %MyDir% %Ras% ::вывод на экран сообщений ECHO Max size of %Ras% file = %Size% ECHO Name of this file - %Name% PAUSE>nul EXIT :_subdir ::перебираем файлы в целевой директории и ее подкаталогах и, если их расширение соответствует заданному, проверяем на максимальный размер FOR /R %1 %%s IN (*) DO IF %%~xs==%2 IF %%~zs GEQ %Size% SET Size=%%~zs&&SET Name=%%~ns EXIT /B |
Отправлено: 17:27, 12-05-2013 | #9 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Ребята, всем огромное спасибо! Все варианты подходят, даже не знаю, что выбрать в итоге
![]() |
Отправлено: 19:38, 12-05-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - двойное раскрытие | CyberMuesli | Скриптовые языки администрирования Windows | 23 | 29-12-2020 21:39 | |
Загрузка - Двойное окно выбора ОС | Divil | Microsoft Windows 2000/XP | 9 | 15-04-2013 17:54 | |
двойное уменьшение частоты FSB | K@kTuS | Непонятные проблемы с Железом | 2 | 20-04-2010 06:31 | |
Двойное выполнение политики | farlow | Microsoft Windows NT/2000/2003 | 3 | 31-08-2007 15:00 | |
Двойное копирование файла с FTP. :( | BlackMonk | Хочу все знать | 3 | 13-02-2005 09:08 |
|