在NSIS中复制文件

我正在使用以下命令来复制文件。

设定输出path后…

File "Documents\*" 

这个行动完美无瑕。 没有问题应付文件目录中的文件,直到…

如果在目录中有一个现有文件(名称不同)的副本,则只有该文件的第一个实例被复制,而不pipe名称如何。

我如何做到这一点,所以它会复制所有文件,无论它们是否是其他文件的副本?

更正/更好的解释(也许)

我为这个混乱道歉。 让我试着重述这个问题。 通过使用FILE命令提取的文件是这里的问题。 这些文件由原始文件和相同文件的副本组成(只能使用不同的名称)。

例如:MyDocument.txt和copyOfMyDocument.txt等等。

当应用File命令时,为了将文件提取到当前的输出path,只有文件的第一个实例被提取(复制或原始的…但不是两者)。 再次,我很抱歉,但这是我第一次不得不与NSIS合作。 我需要提取所有文件。

最简单的方法是把它放在你创建的不同目录下。 那么,如果你需要担心重命名(正如评论员已经注意到你的问题没有多大意义),你可以通过文件来攻击它。

 # Extract the files to a directory which can't exist beforehand CreateDirectory $PLUGINSDIR\extracting SetOutPath $PLUGINSDIR\extracting File Documents\* # Now go through file by file FindFirst $0 $1 $OUTDIR\* ${While} $1 != "" ${If} ${FileExists} $DOCUMENTS\$1 # This still isn't infallible, of course. Rename $DOCUMENTS\$1 $DOCUMENTS\$1.local-backup ${EndIf} Rename $OUTDIR\$1 $DOCUMENTS\$1 FindNext $0 $1 ${Loop} FindClose $0 SetOutPath $INSTDIR # Or somewhere else RMDir $PLUGINSDIR\extracting 

(请注意,这是使用LogicLib。)

这并不是一个非常干净的做法,如果你能避免它,那么做。

我以为我了解你以后的事情,直到我开始阅读答复。 我会按照我的初始解释去做:给一个名为“Documents”的目录,里面有一堆文件(他们叫什么,他们的内容不应该),你需要一个安装程序,将文件复制到一些输出目录。 我在这里为这个场景创建了一个测试安装程序,它适用于我。 你在追求什么?