Удалить все файлы кроме
Здравствуйте! Нужна помощь в написании скрипта:
Задача: удалить все файлы и каталога и всех подкаталогов, кроме файлов содержащих "bgi" в имени. Код:
for /d %%a in ("C:\1") do if /i not "%%a"=="*bgi*" (del/s/q %%~sa\*.*) |
Примерно так:
Код:
for /f %%i in ('dir /s /b ^| findstr /virc:".*bgi.*"') do del /f /q "%%i" |
|
Код:
@for /f "delims=" %%a in ('2^>nul dir/a-d/b/s "C:\1\"^| findstr/eirvc:"\\[^\\]*bgi[^\\]*"') do @del/a/f "%%a" |
Georgio, Прекрасно работает, спасибо!
А можно еще как-то папку исключить из удаления? Если в имени папки есть bgi - не удалять из неё ничего? |
Код:
@for /f "delims=" %%a in ('2^>nul dir/a-d/b/s "C:\1\"^| findstr/eirvc:"\\[^\\]*bgi[^\\]*\\[^\\]*"^| findstr/eirvc:"\\[^\\]*bgi[^\\]*"') do @del/a/f "%%a" |
Georgio, Огромное спасибо!
|
Здравствуйте!
Задача: в корне папки удалить все файлы кроме перечисленных. Подробнее: в корне папки LANG нужно оставить только файлы Ru.ini , En.ini , En.pdf , Ru.pdf ; остальные файлы - удалить, невзирая на расширения. Например, чтобы оставить только файл Ru.ini , пользуюсь таким: Код:
for /f "tokens=*" %%v in ('dir /b "LANG\*.*"') do if NOT "%%v" == "Ru.ini" del "LANG\%%v" |
Код:
… if NOT "%%v" == "Ru.ini" if NOT "%%v" == "En.ini" if NOT "%%v" == "En.pdf" if NOT "%%v" == "Ru.pdf" del "LANG\%%v" |
Iska,
Спасибо! То, что нужно! :good: |
Если для произвольного числа исключений при удалении, то
Код:
@Echo Off |
тогда уж и покороче и побыстрее так (да и возможности маски шире):
Код:
@echo off |
alpap, мне нравится эта возможность xcopy, но обычно я стремлюсь не делать новых файлов из опасения попасть на отсвутствие прав на запись. Да и убрать за собой неплохо бы☺. А если этот служебный файл расположить где-то в %tmp%, то потом им в xcopy не воспользуешься.
Цитата:
|
Цитата:
тут в данном случае все четко определено и если так же четко подавать (и учесть что не будет таких: ""Ru.pdfEn.pdf""имен файлов, хотя почему и нет), то работать будет, а соломку с собой носить надо :) |
Цитата:
|
тем более этот служебный файл никуда и не прячется, создается рядом и оттуда же сразу и удаляется (del /q "%%~a" $)
|
Цитата:
|
Iska,
Не работает xcopy Z:\temp\*.* /L /EXCLUDE:"Z:\У попа была собака\kuku" xcopy Z:\temp\*.* /L /EXCLUDE:Z:\У попа была собака\kuku xcopy Z:\temp\*.* /L /EXCLUDE:"kuku" Работает xcopy Z:\temp\*.* /L /EXCLUDE:Z:\Траляля\kuku Еще другая неприятность с ключом L: xcopy Z:\temp\*.* /L работать не будет, если находиться в папке где файлы (Z:\temp\), выдаст "Невозможно скопировать файл в себя". ИМХО аккуратнее написать, например xcopy Z:\temp\*.* "%Tmp%\" /L то есть в качестве выходной указать другую существующую папку, хотя туда и ничего не попадёт. Кстати, еще странность: если там будет файл с таким же именем, как и в исходной папке, выдаст запрос на перезапись. Извините, впал в глубокий оффтоп, но конструкция Код:
@Echo Off alpap, а если батник запускается с расшаренного ресурса с запретом на запись? Вообще, xcopy моя любимая команда, но иногда доводит до истерики :) |
megaloman,
вот видите как полезно залезть в ... трущобы, и я немного нового узнал и поговорили, а для кого-то в поиске и кладом окажется. |
Всем здравствуйте
Есть папка, типа C:\1 тест\ Внутри этой папки C:\1 тест\ вагон подпапок Внутри каждой подпапки есть файл 1 Вася Привет.doc Задача - оставить файл 1 Вася Привет.doc внутри подпапок, остальные файлы всяко-разных расширений удалить Пожалуйста, научите Итого типа так Код:
@Echo Off |
Код:
@Echo Off |
/del
|
Время: 15:31. |
Время: 15:31.
© OSzone.net 2001-