NSIS Найти все .txt файлы - PullRequest
       31

NSIS Найти все .txt файлы

1 голос
/ 24 октября 2011

У меня есть проверка, чтобы найти все текстовые файлы в $ INSTDIR, как показано ниже.

Однако потенциально могут быть подкаталоги, такие как $ INSTDIR \ mySub, которые содержат дополнительные файлы .txt. Есть ли способ сохранить подобную структуру цикла, но также выполнить поиск по всем подкаталогам?

FindFirst $R0 $R1 "$INSTDIR\*.txt"
IfErrors ExitInstaller 0
LoopIt:
  Messagebox MB_OK "Do some processing on $R1"
  FindNext $R0 $R1
  IfErrors 0 LoopIt

Ответы [ 2 ]

2 голосов
/ 25 октября 2011
Function ProcessTextFiles
Exch $0
Push $1
Push $2
FindFirst $1 $2 "$0\*.txt"
loop:
    IfErrors end
    DetailPrint 'Found "$0\$2"'
    FindNext $1 $2
    goto loop
end:
FindClose $1
FindFirst $1 $2 "$0\*.*"
dirloop:
    IfErrors dirend 
    IfFileExists "$0\$2\*.*" 0 dirnext
    StrCmp $2 "." dirnext
    StrCmp $2 ".." dirnext
    Push "$0\$2"
    call ${__FUNCTION__}
dirnext:
    FindNext $1 $2
    goto dirloop
dirend:
FindClose $1
Pop $2
Pop $1
Pop $0
FunctionEnd

section
push "$InstDir"
call ProcessTextFiles
sectionend
1 голос
/ 24 октября 2011

Попробуйте вместо этого использовать функцию Locate - это может быть гораздо лучшим решением. Вы можете написать опции для поиска с (или без) подкаталогами, определить маску и так далее. См. http://nsis.sourceforge.net/Locate для документации и примеров.

...