|
Компьютерный форум 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 |
Ветеран Сообщения: 1758
|
|
Последний раз редактировалось 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 |
Ветеран Сообщения: 1758
|
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 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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 |
|