25

我似乎找不到任何关于如何使用 NSIS 复制目录的信息?,我知道有一个文件命令,但是有没有复制目录的命令。

4

4 回答 4

36

目录和文件的语法相同,只是您需要通过\在末尾提供 a 来指定目录。File如果指定的参数是目录,则命令复制目录。例如,您可以这样做:

SetOutPath "outputPath"
File "myDirectory\" #note back slash at the end

但这仅复制顶级目录。要递归地做到这一点,你有/rswitch

SetOutPath "outputPath"
File /nonfatal /a /r "myDirectory\" #note back slash at the end

它复制myDirectory(但不是myDirectory文件夹本身)的内容。/nonfatal如果没有特定目录,则忽略而不会出错。/a也复制文件属性。/x开关用于排除文件。

否则,

SetOutPath "outputPath\myDirectory"
File /nonfatal /a /r "myDirectory\" #note back slash at the end

myDirectory将包含myDirectory文件夹的所有内容复制到outputPath.

于 2013-07-23T16:40:07.320 回答
4

我找到了怎么做,抱歉给你添麻烦了。

将文件提取到事先不存在的目录中

CreateDirectory $Installdir\extracting

SetOutPath $Installdir\extracting

File Directory\*
于 2012-06-13T11:39:18.603 回答
3

File指令从您的安装程序中提取文件并CopyFiles复制最终用户系统上已经存在的文件和/或目录(如果您需要从安装程序所在的 DVD 复制文件,您可以使用 $EXEDIR...)

于 2012-06-13T12:19:57.447 回答
0

反斜杠后与整个内容匹配的星号是强制性的。语法如下。

请参阅手册第 4.9.1.6 节

SetOutPath "outputPath\myDirectory"
File /nonfatal /a /r "myDirectory\*" 
于 2019-10-04T15:22:42.433 回答