Для поиска файлов можно применить
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