Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление по спискам с масками (http://forum.oszone.net/showthread.php?t=230085)

dorosa 11-03-2012 21:41 1877120

Удаление по спискам с масками
 
Здравствуйте!
Столкнулся с такими проблемами:
Удаление папок по списку с использованием масок
читать дальше »
Часть кода для удаления папок по списку
Код:

  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 1877543

Цитата:

Цитата dorosa
Нужно сделать так, чтобы в текстовом файле можно было концовку в названии папки заменить на звездочку »

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

Цитата dorosa
Код:

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

на:
Код:

For /D %%i In ("%Mount%%%A") Do If EXIST "%%~i" RD /S /Q "%%~i"
Цитата:

Цитата dorosa
Тут маски работают, но удаление происходит и во вложенных папках, а нужно чтобы удалялось только в указанной »

Уберите ключ /S после команды DEL

dorosa 13-03-2012 02:30 1878046

Цитата:

Цитата gora
Уберите ключ /S после команды DEL »

Проглядел и уже ни первый раз.
Спасибо!!!
Сработали варианты по обоим кускам кода.

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


Время: 23:15.

Время: 23:15.
© OSzone.net 2001-