Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
devenge
8 / 8 / 0
Регистрация: 11.11.2011
Сообщений: 208
#1

Возможно ли выполнить определённое действие с каждым заданным файлом в текущей папке? - CMD/BAT

27.08.2012, 16:42. Просмотров 2574. Ответов 3
Метки нет (Все метки)

Возможно ли выполнить действие к файлам в текущей папке через консоль Windows?

То есть я хочу создать файл exec.bat, который при запуске уменьшает все картинки в текущей папке. То есть мне надо для каждой картинки выполнить такой код (используется ImageMagick):

Bash
1
convert img.png -resize 100 img_100px.jpg
Как это можно сделать через консоль Windows?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2012, 16:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Возможно ли выполнить определённое действие с каждым заданным файлом в текущей папке? (CMD/BAT):

Создание в текущей папке каталогов - CMD/BAT
Мальчики помогите пожалуйста решить задачку. Сессия через неделю,не успеваю разобраться с ней ( Задача 1 Создание в текущей папке...

Циклический перебор файлов в подпапках с выполнением определённой операции с каждым файлом - CMD/BAT
Приветствую! Прошу простить если дублирую чье-то сообщение, но что-то я не нашел чего хотел, хотя вроде распространенная вещь. ...

Удалить все пустые папки в текущей папке - CMD/BAT
Удалить все пустые папки в текущей папке.

Сравнить дату с текущей, если ДА, выполнить действие - C++ Builder
Здравствуйте! Хочу сравнить дату, которая заносится в переменную datetime, с текущей (11.06.2013), но выскакивает ошибка: ...

Как делать действие через определённое время? - Java SE
Добрый день. Есть игра «Змейка», где практически всё готово, но нужно сделать так, чтобы при нажатии на кнопку змейка сама продолжала своё...

Каждой кнопке из массива назначить определённое действие - Delphi
Как в массиве из 10 Buttons по нажатию на каждый Button выполнять разные действия. Ребята пожалуйста помогите, вся работа стоит. Буду...

3
Dragokas
Эксперт WindowsАвтор FAQ
16614 / 6999 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
27.08.2012, 21:55 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Bash
1
2
3
4
5
@echo off
set pict=*.png,*.jpg,*.bmp
for /f "delims=" %%i in ('dir %pict% /b /a:-d') do (
  convert %%i -resize 100 %%~ni_100px.jpg
)
1
devenge
8 / 8 / 0
Регистрация: 11.11.2011
Сообщений: 208
27.08.2012, 23:30  [ТС] #3
Впервые сталкиваюсь с циклом в консоли Windows, как я понял, данный код делает следующее. Если где-то ошибаюсь, то поправьте пожалуйста

for /f - применяет действие над каждым файлом (for /d над каждой папкой)

"delims=" - задает разделитель, здесь разделитель задан на имя файла (который обозначен %%i)

in ('dir %pict% /b /a:-d') -применить команду в директории (команда dir) над файлами, которые совпадают с set pict=*.png,*.jpg,*.bmp.

Я правильно разобрал код или как он работает?
0
Dragokas
Эксперт WindowsАвтор FAQ
16614 / 6999 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
12.10.2012, 01:53 #4
for /f
Для каждого файла/папки/строки (в зависимости от типа данных, которые будут в скобках). Он (тип) в свою очередь определяется видом кавычек (или их отсутствием), а также модификатором UseBackq.

"delims="
Задает пустой разделитель. По-умолчанию он равен пробелу и знаку табуляции.
Т.о. в первый токен попадает вся строка (вне зависимости от наличия пробелов в пути и/или имени файла/каталога).

in ('dir %pict% /b /a:-d')
Выполнить команду dir %pict% /b /a:-d
и произвести синтаксический разбор выводимых нею данных
(по правилам, заданных предыдущими ключами/параметрами FOR).

%pict%
Подставляется значение переменной pict

dir *.png
Вывести на экран все файлы и папки в текущем каталоге, которые совпадают с заданной маской поиска (допускается разделитель - запятая)

/a:-d - исключить папки
/b - показать только имена без сопутствующей информации.

Некоторые пояснения по работе с FOR см. по ссылкам в конце темы: Литература, учебники, пособия по CMD/BAT, список команд
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2012, 01:53
Привет! Вот еще темы с ответами:

Как написать программе выполнять определённое действие (функцию) перед закрытием? - C++
В общем, как я раньше и говорил, я работаю над программой. Очень быстрой. Слегка подкорректировав код программы я сумел увеличить...

Поточный таймер (Сделать определённое действие в функции, а результат вывести чуть позже) - C++ WinAPI
Перед закрытием потока в команде WaitForSingleObject мы можем установить промежуток времени, через который поток можно автоматически...

Запуск файла в папке, лежащий в папке с запускающим файлом, с предварительной скачкой данного файла - C#
Вообщем, у меня есть программа, которая должна качать определённый файл с определённой ссылки, а после его запускать, через 2 секунды. У...

Работа с каждым файлом из каждой папки - VBA
Добрый день товарищи. прошу помощи с таким вопросом: есть папка по адресу C:\Temp\ в ней находятся еще несколько папок, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru