Может не быть тем, что Вы ищете, но я использовал бы Cygwin, и *отклоняют, находят утилиту:
find dir1 -name "*.ext" | while read i; do zip "$i.zip" "$i"; done
"найдите" запускается в "dir1" и рекурсивно вызывает, соответствуя всему названию формы "*.ext". Это производит список соответствий, который передается по каналу к, "в то время как считано i", который читает каждую строку (путь соответствия) в переменную "i". Для каждого различного значения меня команда "zip" выполняется, сжимая файл в архив zip того же имени (и путь), но с добавленным ".zip".
Обратите внимание, что вышеупомянутое не удалит исходный файл. Я, возможно, добавил "$i комнаты" после команды zip, чтобы сделать это, но лучше создать архивы за один шаг и затем использовать:
find dir1 -name "*.ext" | while read i; rm "$i"; done
найти и удалить оригиналы. Другая хорошая вещь сделать для тестирования строки прежде, чем выполнить его состоит в том, чтобы повторить команду, вместо того, чтобы выполнить его.
find dir1 -name "*.ext" | while read i; do echo zip "$i.zip" "$i"; echo rm "$i"; done
Это покажет Вам, каждая zip и комната управляет, чтобы это сделало бы при удалении echos таким образом, можно удостовериться, что это делает правильную вещь. Затем удалите echos, чтобы на самом деле сделать это.
Если существует хороший способ сделать это с общими утилитами Windows, я не знаю о нем.