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;)



Но для директорий не работает.
  • Вопрос задан
  • 3614 просмотров
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы