CMD/BAT - [решено] Удаление по спискам с масками

Ответить
Аватара пользователя
dorosa

CMD/BAT - [решено] Удаление по спискам с масками

Сообщение dorosa »

Здравствуйте!

Столкнулся с такими проблемами:

Удаление папок по списку с использованием масок


читать дальше »


Часть кода для удаления папок по списку



Код:

Код: Выделить всё

  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

Re: CMD/BAT - [решено] Удаление по спискам с масками

Сообщение gora »

Цитата dorosa:



Нужно сделать так, чтобы в текстовом файле можно было концовку в названии папки заменить на звездочку
CMD/BAT - [решено] Удаление по спискам с масками




Попробуйте заменить Вашу строку:


Цитата dorosa:





Код:

Код: Выделить всё

IF EXIST "%Mount%!pfnm!" RD /S /Q "%Mount%!pfnm!"

CMD/BAT - [решено] Удаление по спискам с масками




на:

Код:

Код: Выделить всё

For /D %%i In ("%Mount%%%A") Do If EXIST "%%~i" RD /S /Q "%%~i"


Цитата dorosa:



Тут маски работают, но удаление происходит и во вложенных папках, а нужно чтобы удалялось только в указанной
CMD/BAT - [решено] Удаление по спискам с масками




Уберите ключ /S после команды DEL
Аватара пользователя
dorosa

Re: CMD/BAT - [решено] Удаление по спискам с масками

Сообщение dorosa »

Цитата gora:



Уберите ключ /S после команды DEL
CMD/BAT - [решено] Удаление по спискам с масками




Проглядел и уже ни первый раз.

Спасибо!!!

Сработали варианты по обоим кускам кода.



Если можно, то еще наглый вопрос.

Как в эти коды внести исключения, без указания пути и с применением масок.

Причем для удаления папок, исключения как папок (например - keyboard-00000409), так и файлов (например - KBDRU.DLL или KB*.*)?

Можно, а возможно даже лучше, если исключения тоже будут списками в текстовых файлах.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»