Attrib

From NSIS Wiki
Jump to navigationJump to search
Author: sunjammer (talk, contrib)


Description

A small NSIS script function written by Hendri Adriaens aka Smile2Me that applies file attributes to many files at once.

Hendri said at the time "I created it for Eduardo R. Puntel. He created an installer that copies files from CD to harddisk and wanted the program to be able to edit all files after install. The script changes the FileAttribute of all files in a dir to a preset value. Edit the script a bit to customise to your required FileAttributes for the files. The script can be used as a workaround since

SetFileAttributes "DIR\*.*" NORMAL

does not work.

The Script

outfile attrib.exe
name attrib
 
; Attrib
;
; Script to quickly set the FileAttribute
; of many files in a dir.
;
; Usage:
; Push "Dir"
; Call Attrib
;
; Notice that SetFileAttributes cannot take
; variables as "Attribute" so edit the script
; if you want some other attribute(s) to be
; assigned to the files.
;
; This might be a handy script when copying
; files from CD that need to be edited later.
;
; By: Hendri Adriaens
;     HendriAdriaens@hotmail.com
 
Section
; The demo zip includes two text-files.
; Check that they are "read-only" and
; then compile and run the script.
Push $EXEDIR\prob
Call Attrib
Sectionend
 
Function Attrib
  Exch $1 ; Dir
  Push $2
  Push $3
  FindFirst $2 $3 "$1\*.*"
  StrCmp $3 "" exitloop
  loop:
  StrCmp $3 "" exitloop
  StrCmp $3 "." next
  StrCmp $3 ".." next
  IfFileExists "$1\$3\*.*" next
  ; SetFileAttributes does not accept variables as attribute,
  ; so manually set this to the necessary value.
  SetFileAttributes "$1\$3" 0
  next:
  FindNext $2 $3
  Goto loop
  exitloop:
  FindClose $2
  Pop $3
  Pop $2
  Pop $1
FunctionEnd