|
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
|
||||||
Условие выполнения при разных размерах23.10.2011, 22:35. Показов 4044. Ответов 10
Метки нет (Все метки)
Как сделать условие по поводу размера файла и расширения?
Например начали сканировать папку, первый файл взяли его имя, путь, проверили его на размер и имя, если размер меньше 30 мб и формат расширения любой кроме Rar, продолжаем дальше с ним работать если больше 30 мегабайт и rar делаем условие определенное над выполнением этого файла.
Цикл должен остаться точно так-как перебираем каждый файл.
0
|
||||||
| 23.10.2011, 22:35 | |
|
Ответы с готовыми решениями:
10
Изменение размера контролов при разных размерах экрана Отображение фона одинаково на разных размерах экрана
|
|
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
|
|||||||||||
| 23.10.2011, 23:01 | |||||||||||
а вообще если вам только файлы rar нужно можно даже так
1
|
|||||||||||
|
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
|
||
| 23.10.2011, 23:08 [ТС] | ||
|
Прошу прощения, а можно прокомментировать ? А то чето не могу понять.
Добавлено через 5 минут вот это
0
|
||
|
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
|
||||||
| 23.10.2011, 23:14 | ||||||
|
Про SetLocal enabledelayedexpansion
В обычном случае, чтобы узнать значение переменной окружения, надо воспользоваться конструкцией %переменная%. Однако, если значение переменной меняется внутри цикла и читается там же, то для корректной работы батника, нужно использовать команду setlocal enabledelayedexpansion и вместо символа "%", использовать символ "!". Иначе, значение переменной в цикле будет всегда одним и тем же - таким, каким было до входа в цикл. (Ну или можно использовать процедуры которые я раньше использовал, но при большой вложенности циклов код очень путается поэтому мне теперь больше нравится SetLocal enabledelayedexpansion) if not exist c:\2 md c:\2 Создаем каталог с которым работает команда move если его нет. Иначе если вдруг каталога не будет команда move не сработает вообще. for /f "delims=" %%i in ('dir /a-d /b c:\1\') do (...) получаем по очереди в переменную %%i имена файлов из каталога и выполняем над ними действия в цикле. if %%~zi gtr 31457280 30Мб это 30*1024*1024=31457280 байт %%~zi размер файла если он больше выполняем условие if /i %%~xi==.rar %%~xi разрешение файла если оно rar то выполняем условие move !name! c:\2\ перемещаем файл в каталог c:\2
Не надо выдумывать аналогий с C++ смотрите справку for /? if /? move /?
1
|
||||||
|
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
|
|
| 23.10.2011, 23:18 [ТС] | |
|
Спасибо большое, вставлю в свою часть кода. Программировать на bat как-то сложней чем на с++. Просто привык больше к с, а тут приходится писать на bat. Кстати есть ограничение на длину bat файла ? Сколько строк?
Добавлено через 2 минуты Справку по каждой команде смотрю, но пока не получается полностью понять. Раньше дальше copy cd.. dir не приходилось пользоваться ))) Еще раз спасибо
0
|
|
|
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
|
|
| 23.10.2011, 23:27 | |
|
На длину бат файла ограничений нет.
Добавлено через 2 минуты В батниках больше другие проблемы если написать команду с неправильным синтаксисом батник дойдя до этой строчки молча закрывается. и приходится после каждой строчки ставить паузу и смотреть где он спотыкается. Например если вместо if %n%==123 написать if %n%=123 то так и происходит.
1
|
|
|
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
|
|
| 23.10.2011, 23:34 [ТС] | |
|
Если прописать и все проверить, по паузе, потом то можно паузы по-убирать или лучше вообще ват структуру проверять на наличие выполнения каждую команду "if errorlevel" ? Просто текста уже около 500 строк и то что Вы говорите ват файл может просто закрыться черевато.
0
|
|
|
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
|
||||||
| 24.10.2011, 00:01 | ||||||
|
Ну да если большой файл можно похитрее кое что придумать.
Можно сделать еще один батник вызывающий рабочий.
И просмотрев лог можно будет увидеть в конце ту строку которую не удалось обработать.
1
|
||||||
|
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
|
|
| 24.10.2011, 00:17 [ТС] | |
|
Хм у меня программа сценария будет зациклена и смысла вывода в лог не имеет смысла. По моему сценарию программа опрашивает порядка 2000 директорий + еще около 150 временных директорий и после опроса начинает очередной опрос и смотреть лог по каждой команде. Сейчас я пробовал опрашивать 30 директорий на наличие файлов и вести обработку над каждым файлом и когда я вывел лог с echo on у меня получилось порядка 1000 строк правда + комментарии. Так это 30 директорий а что будет когда все 2000 директорий буду опрашивать в цикле ? в течении 12 часов ?
Добавлено через 3 минуты Поэтому тут необходимо наверное в случае не выполнения какой-либо команды прекращать выполнение выводя паузу или именно в том месте где споткнулся записывать в лог. Пока не знаю как но думаю через if errorlevel Кстати спасибо за Setlocal очень полезная команда. Добавлено через 4 минуты Тем более когда один бат файл запускается для разных структур каталогов.
0
|
|
|
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
|
|
| 24.10.2011, 01:21 | |
|
if errorlevel это нужно для стандартных ошибок когда проверяется что команда прошла или нет.
А вначале когда есть ошибки в синтаксисе лучше в лог писать. Ну при запуске видно будет если программа сразу закрывается значит где то косяки придется проверять код.
0
|
|
|
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
|
||||||
| 24.10.2011, 20:43 [ТС] | ||||||
|
Перепробовал все возможные варианты но чето код Ваш так и не заработал.
Переделал немого по-другому заработало. Вот код
0
|
||||||
| 24.10.2011, 20:43 | |
|
Помогаю со студенческими работами здесь
11
условие выбора в ячейке при разных месяцах Условие выполнения опреции при наличии более двух условий Условие if. Как сделать повтор выполнения if-а, если условие не удовлетворяет требованиям в данный момент
Программа вылетает при больших размерах массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|