Войти

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


dorosa
11-03-2012, 21:41
Здравствуйте!
Столкнулся с такими проблемами:
Удаление папок по списку с использованием масок
Часть кода для удаления папок по списку
for /F "usebackq delims=" %%A in ("%Resources%\$_Deletes\PE_del_folders.txt") do (
SET pfnm=%%A
IF "!pfnm:~0,1!"=="\" (
IF EXIST "%Mount%!pfnm!" RD /S /Q "%Mount%!pfnm!"
)
)
Если в списке полное название папки и пути, то все удаляется отлично.
Кусок PE_del_folders.txt
\Windows\winsxs\x86_microsoft-windows-i..l-keyboard-00000449_31bf3856ad364e35_6.1.7601.17514_none_ecd56c86c0325d51
\Windows\winsxs\x86_microsoft-windows-i..l-keyboard-0000044a_31bf3856ad364e35_6.1.7601.17514_none_fe928bb6b4cb1269
Нужно сделать так, чтобы в текстовом файле можно было концовку в названии папки заменить на звездочку или знак вопроса
\Windows\winsxs\x86_microsoft-windows-i..l-keyboard-0000044a_*

Другая проблемка, удаление файлов по списку с использованием масок
for /F "usebackq delims=" %%A in ("%Resources%\$_Deletes\Del_files.txt") do (
SET pfnm=%%A
IF "!pfnm:~0,1!"=="\" (
IF EXIST "%Mount%!pfnm!" attrib -R -S -H "%Mount%!pfnm!"
IF EXIST "%Mount%!pfnm!" DEL /S /Q "%Mount%!pfnm!"
)
)
Кусок файла Del_files.txt
\sources\*.dat
\sources\*.nls
\sources\*.exe
Тут маски работают, но удаление происходит и во вложенных папках, а нужно чтобы удалялось только в указанной
Например - \sources\*.exe
А сейчас удаляются файлы .exe и в папке \sources\recovery\
Чего нужно изменить для получения желаемого результата?

gora
12-03-2012, 11:33
Нужно сделать так, чтобы в текстовом файле можно было концовку в названии папки заменить на звездочку »
Попробуйте заменить Вашу строку:
IF EXIST "%Mount%!pfnm!" RD /S /Q "%Mount%!pfnm!" »
на:For /D %%i In ("%Mount%%%A") Do If EXIST "%%~i" RD /S /Q "%%~i"
Тут маски работают, но удаление происходит и во вложенных папках, а нужно чтобы удалялось только в указанной »
Уберите ключ /S после команды DEL

dorosa
13-03-2012, 02:30
Уберите ключ /S после команды DEL »
Проглядел и уже ни первый раз.
Спасибо!!!
Сработали варианты по обоим кускам кода.

Если можно, то еще наглый вопрос.
Как в эти коды внести исключения, без указания пути и с применением масок.
Причем для удаления папок, исключения как папок (например - keyboard-00000409), так и файлов (например - KBDRU.DLL или KB*.*)?
Можно, а возможно даже лучше, если исключения тоже будут списками в текстовых файлах.




© OSzone.net 2001-2012