Войти

Показать полную графическую версию : [решено] Удаления файла в директории минуя удаления файла в поддиректории


ukrshadow
07-02-2020, 12:03
Добрый день!
Хелп!) Есть директория в которой много директорий с разными названиями. В каждой этой директории еще директория (тут одинаковые названия), а в этой директории папка с файлом PDF и отдельный файл PDF. Не могу доверстать батник, чтобы он удалял файл PDF из этой директории во всех директориях порядком выше, но не трогал поддиректорию proof c файлом PDF.

Вот пути:
D:\333\articles\1\submission - тут файл PDF, который нужно удалить и тут же папка proof (в ней PDF), в которую батник не должен заходить вообще и ничего с ней не делать.
D:\333\articles\2\submission - тут файл PDF, который нужно удалить и тут же папка proof (в ней PDF), в которую батник не должен заходить вообще и ничего с ней не делать.
D:\333\articles\3\submission - тут файл PDF, который нужно удалить и тут же папка proof (в ней PDF), в которую батник не должен заходить вообще и ничего с ней не делать.
и тд до ~999

По логике, нужен кусок кода который закрывают доступ к папке proof в приделах всех папок D:\333\articles\*

for /d %%a in ("D:\333\articles\*") do if /i not "%%a"=="*D:\333\articles\*.*\submission\proof" (del/s/q %%~sa\*.zip)


Этот код убивает все PDF в D:\333\articles\*.
PS. PDF файлы именуются системой рандомно....удалять файлы по названию - не вариант

DJ Mogarych
07-02-2020, 13:40
powershell -command "del D:\333\articles\*\submission\*.pdf"

ukrshadow
07-02-2020, 14:32
Действительно......что-то я очень обходными путями пошел!!
Спасибо!!!

megaloman
07-02-2020, 14:34
ukrshadow, Если делать задачу в точности, как она поставлена, то:@Echo Off
Set "FileIn=D:\333\articles\%%i\submission\*.pdf"
FOR /L %%i IN (1,1,999) DO If Exist "%FileIn%" Del "%FileIn%"
Exit /B 0

megaloman
07-02-2020, 15:19
ukrshadow, Вот вариант, который будет работать с произвольными именами папок. Имя исключаемой папки задаётся@Echo Off
cls
Set "BoxIn=D:\333\articles"
Set "Mask=*.pdf"
Set "Excl=\proof\"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /S ^| 2^>nul FIND /V /I "%Excl%"`) Do Del "%%f"
pause
Exit /B 0




© OSzone.net 2001-2012