Задать вопрос
burdakovd
@burdakovd

Windows batch find and delete?

find /some/path -type d -name .svn -delete<br/>
find /some/path -type d -name &quot;Prefix_*&quot; -delete<br/>
find /some/path -type f -name &quot;*.bak&quot; -delete<br/>



Нужен аналог, но для Windows.


Для файлов *.bak работает следующее (нашёл на просторах интернета, но не совсем понимаю как оно работает, for /? инфы даёт мало)
for /R &quot;D:\SomePath&quot; %X in (*.bak) do (del &quot;%X&quot;)



Но для директорий не работает.
  • Вопрос задан
  • 3615 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
umcherrel
@umcherrel
find /some/path -type d -name .svn -delete
for /D /R «D:\SomePath» %X in (svn) do (rmdir /Q /S "%X")

find /some/path -type d -name «Prefix_*» -delete
for /D /R «D:\SomePath» %X in (Prefix_*) do (rmdir /Q /S "%X")

Из документации [1] на for
Directories only

If set contains wildcards (* and ?), the specified command executes for each directory (instead of a set of files in a specified directory) that matches set. The syntax is:

for /D {%% | %}variable in (set) do command [CommandLineOptions]

[1] technet.microsoft.com/en-us/library/bb490909.aspx
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@bondbig
вообще в windows есть встроенная find, но она больше на упрощенный grep похожа. Может ее и хватит для задачки, тут более опытные win-товарищи должны подсказать.
Может вам power shell попробовать? Ну или cygwin поставить и пользоваться привычными линукс-командами и скриптами.
Ответ написан
Комментировать
@max_rip
для файлов del *.bak /q /s
Ответ написан
А еще есть такая штука под названием cygwin — советую присмотреться.
Лично я бы реализовал задачу на WSH (Jscript/VBscript) — там язык намного мощнее, т.ч. вы хотите доступно через коллекцию Enumerator.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Aporia Севастополь
от 50 000 до 100 000 ₽
Clain Лимассол
от 5 000 €