|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сохранить только два типа файлов? |
|
CMD/BAT - [решено] Как сохранить только два типа файлов?
|
Старожил Сообщения: 170 |
Здравствуйте, уважаемые форумчане.
...есть диск с множеством папок и подпапок разной глубины с файлами различных расширений, нужно во всем этом хаосе оставить только два типа файлов, но с условием, что они находятся вместе в одной папке. Если условие не выполнено, то необходимо удалить папку с файлами целиком, т.е. в итоге необходимо получить диск без пустых папок, а в папках, которые остались должны быть файлы с двумя расширениями. Помогите пожалуйста решить этот вопрос через командную строку. |
|
Отправлено: 08:10, 06-11-2019 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Цитата Profile:
|
|
------- Отправлено: 13:16, 06-11-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 170
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
Отправлено: 14:05, 06-11-2019 | #3 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Тут, видимо, надо в два этапа.
Powershell: # Удаление ненужных файлов $folders = (dir D:\temp\123 -Recurse -Directory -Force).fullname $ext = ".jpg",".png" $folders |% { $files = dir "$_" -File -Force if ($files.extension -notcontains "$($ext[0])" -or $files.extension -notcontains "$($ext[1])") { foreach ($file in $files.fullname) {del "$file" -force -confirm:$false} } else {del $files.FullName -Exclude "*$($ext[0])","*$($ext[1])" -Force -confirm:$false} } # Удаление пустых каталогов $folders |% { $files = dir "$_" -File -Recurse -Force if (!($files)) {del "$_" -force -confirm:$false} } |
------- Последний раз редактировалось DJ Mogarych, 06-11-2019 в 22:13. Причина: v2, спасибо Iska за замеченный недостаток Отправлено: 15:46, 06-11-2019 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Исправленный вариант
@Echo Off Set "BoxIn=Z:\Box_In" Set "Ext1=.xls" Set "Ext2=.doc" For /F "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%" /B /S /A:D ^|Sort /R`) Do ( Call :ExtDel "%Ext1%" "%Ext2%" "%%d" ) Pushd "%BoxIn%" &&Call :ExtDel "%Ext1%" "%Ext2%" "%BoxIn%" Popd Exit /B 0 :ExtDel FOR /F "usebackq delims=" %%i IN (`2^>nul Dir /B /A:-D "%~3\*.*"`) DO ( If /I Not "%%~xi"=="%~1" If /I Not "%%~xi"=="%~2" Del /A /F /Q "%~3\%%~i" ) FOR /F "usebackq delims=" %%i IN (`2^>nul Dir /B /A:-D "%~3\*%~1"`) DO ( If /I "%%~xi"=="%~1" FOR /F "usebackq delims=" %%j IN (`2^>nul Dir /B /A:-D "%~3\*%~2"`) DO ( If /I "%%~xj"=="%~2" Exit /B 0 ) ) Del /A /F /Q "%~3\*.*" 2>nul Rd "%~3" Exit /B 1 |
|
------- Отправлено: 19:45, 06-11-2019 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DJ Mogarych, не хватает удаления прочих типов файлов в каталоге, где содержатся и .jpg, и .png.
|
Отправлено: 20:14, 06-11-2019 | #6 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Переделал, см. выше.
|
------- Отправлено: 22:13, 06-11-2019 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Еще вариант
@Echo Off Set "BoxIn=Z:\Box_In" Set "Ext1=.xls" Set "Ext2=.doc" For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\" /B /S /A:-D ^|FINDSTR /E /I /V /C:"%Ext1%" /C:"%Ext2%"`) Do Del /A /F /Q "%%f" For /F "usebackq delims=" %%d In (`2^>nul Dir "%BoxIn%" /B /S /A:D ^|Sort /R`) Do ( Call :ExtDel "%Ext1%" "%Ext2%" "%%d" ) Pushd "%BoxIn%" &&Call :ExtDel "%Ext1%" "%Ext2%" "%BoxIn%" Popd Exit /B 0 :ExtDel FOR /F "usebackq delims=" %%i IN (`2^>nul Dir /B /A:-D "%~3\*%~1"`) DO ( If /I "%%~xi"=="%~1" FOR /F "usebackq delims=" %%j IN (`2^>nul Dir /B /A:-D "%~3\*%~2"`) DO ( If /I "%%~xj"=="%~2" Exit /B 0 )) Del /A /F /Q "%~3\*.*" 2>nul Rd "%~3" Exit /B 1 |
------- Отправлено: 15:21, 07-11-2019 | #8 |
Старожил Сообщения: 170
|
Профиль | Отправить PM | Цитировать Спасибо всем большое.
Все получилось) |
Отправлено: 14:13, 10-11-2019 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
8 / 2012 - Sysprep | Windows 8.1 | как сохранить ассациацию файлов? | atsasinWTF | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 1 | 25-08-2014 18:11 | |
Разное - Как назначить программу для открытия файлов одного типа | fonarik | Microsoft Windows 2000/XP | 1 | 09-10-2010 11:08 | |
[решено] Есть папка с большим количеством jpeg файлов, надо сохранить файлы как .bmp | evg64 | AutoIt | 9 | 02-10-2009 09:46 | |
[решено] Как сохранить в Radmin 3.0 введённые данные, типа IP, имена хостов.. | Kugaenko | Защита компьютерных систем | 3 | 30-10-2007 19:59 | |
как изменить права на файлы только определенного типа | Guest | Microsoft Windows NT/2000/2003 | 12 | 23-03-2004 10:09 |
|