MakeRecurentFileList: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(Created page with "{{PageAuthor|Zanir}} == Description == Create file list with relative paths of files in a directory. There is possible to define output file, filter, local and global folder....") |
(No difference)
|
Revision as of 10:49, 6 May 2015
| Author: Zanir (talk, contrib) |
Description
Create file list with relative paths of files in a directory. There is possible to define output file, filter, local and global folder. Local folder and rest path with filename is saved to output file. Global folder is not saved.
Usage
!define UNINSTALL_MAP "uninstall.txt" Delete "$INSTDIR\${UNINSTALL_MAP}" ; delete output file if exist, there is used append mode Push "$INSTDIR\${UNINSTALL_MAP}" ; output file Push ".pdf" ; filter (only files which has this string in filename are added) Push "Doc" ; local folder Push "$EXEDIR" ; global folder Call MakeRecurrentFileList
The Function
!include "StrContains.nsh" ; http://nsis.sourceforge.net/StrContains Function MakeRecurrentFileList Pop $R3 ; global folder Pop $R2 ; local folder Pop $R1 ; filter Pop $R0 ; output file ClearErrors FindFirst $R4 $R5 "$R3\$R2\*.*" MakeRecurrentFileList_Loop: IfErrors MakeRecurrentFileList_Done ; check if it is folder IfFileExists "$R3\$R2\$R5\*.*" 0 MakeRecurrentFileList_file ; directory StrCmp $R5 "." MakeRecurrentFileList_next ; skip current folder StrCmp $R5 ".." MakeRecurrentFileList_next ; skip parent folder ; go Recurrent ; save current variables Push $R5 Push $R4 Push $R3 Push $R2 Push $R1 Push $R0 ; set parameters Push $R0 ; output file Push $R1 ; filter Push "$R2\$R5" ; local folder Push $R3 ; global folder call MakeRecurrentFileList ; restore current variables Pop $R0 Pop $R1 Pop $R2 Pop $R3 Pop $R4 Pop $R5 Goto MakeRecurrentFileList_next MakeRecurrentFileList_file: ; use filter ${StrContains} $0 $R1 $R5 StrCmp $0 "" MakeRecurrentFileList_notfound ; filter found, add file to list FileOpen $R6 $R0 a FileSeek $R6 0 END FileWrite $R6 "$R2\$R5$\r$\n" FileClose $R6 MakeRecurrentFileList_notfound: MakeRecurrentFileList_next: ClearErrors FindNext $R4 $R5 Goto MakeRecurrentFileList_Loop MakeRecurrentFileList_Done: FindClose $R4 FunctionEnd