Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 352
Благодарности: 192

Профиль | Отправить PM | Цитировать


Для поиска файлов можно применить Locate из FileFunc.nsh
Для сопоставления имён файлов - WinAPI-функции PathMatchSpec/PathMatchSpecEx
PathMatchSpecEx может сопоставлять строку с множеством шаблонов, разделяемых точкой с запятой (из-за чего ";" в шаблонах использовать нельзя).

пример
Код: Выделить весь код
!appendfile 'test ccc' ''
!appendfile 'test1234' ''
!system 'md "test"'
!system 'md " test2"'
!system 'md "test aaa"'
!system 'md "test bbb"'
!system 'md "test xxx"'
!system 'md "test yyy"'
!system 'md "test_xyz"'

ShowInstDetails show
RequestExecutionLevel user
SetFont 'Fira Code Retina' 9
InstallColors /windows

!include LogicLib.nsh
!include FileFunc.nsh

Section UseLocate
  ${Locate} $EXEDIR '/M=test *' DeleteFilesByMask
SectionEnd

Function DeleteFilesByMask
  SetDetailsPrint both

  System::Call 'shlwapi.dll::PathMatchSpecEx(tR7, ts, i1)p.R0' 'test xxx;test yyy'
  ${If} $R0 == 1
    ${If} $R6 == '' 
      DetailPrint 'RMDir  $R7'
      ; RMDir /r '$R9'
    ${Else}
      DetailPrint 'Delete $R7'
      ; Delete '$R9'
    ${EndIf}
  ${Else}
    DetailPrint 'Skip   $R7'
  ${EndIf}

  Push ''

  SetDetailsPrint textonly
FunctionEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:13, 26-04-2023 | #2721