首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSIS - 如何在排除文件的同时递归复制?

在使用NSIS(Nullsoft Scriptable Install System)进行安装程序制作时,如果需要在排除文件的同时递归复制,可以使用以下方法:

  1. 使用File指令:

在NSIS脚本中,可以使用File指令来复制文件。例如,以下代码将复制source_folder中的所有文件和子文件夹到destination_folder

代码语言:txt
复制
SetOutPath $INSTDIR\destination_folder
File /r /x "excluded_file" "source_folder\*.*"

其中,/r表示递归复制,/x表示排除指定文件。在这个例子中,excluded_file是需要排除的文件名。

  1. 使用FindFirstFindNext指令:

如果需要更复杂的排除规则,可以使用FindFirstFindNext指令来遍历文件夹并排除不需要的文件。例如,以下代码将复制source_folder中的所有文件和子文件夹到destination_folder,但会排除所有以.开头的隐藏文件:

代码语言:txt
复制
Function exclude_hidden_files
    FindFirst $0 $1 "$INSTDIR\source_folder\*.*"
    loop:
        StrCmp $1 "" done
        StrCpy $2 $1 1
        StrCmp $2 "." exclude
        StrCmp $2 "" exclude
        push $1
        call do_copy
        pop $1
    exclude:
        FindNext $0 $1
        Goto loop
    done:
        FindClose $0
FunctionEnd

Section
    SetOutPath $INSTDIR\destination_folder
    push "$INSTDIR\source_folder"
    call exclude_hidden_files
SectionEnd

在这个例子中,exclude_hidden_files是一个自定义函数,用于遍历文件夹并排除隐藏文件。do_copy是一个未定义的函数,用于复制文件。

  1. 使用!include指令:

如果需要排除多个文件或文件夹,可以使用!include指令将文件列表存储在一个单独的文件中,并在NSIS脚本中包含该文件。例如,以下代码将复制source_folder中的所有文件和子文件夹到destination_folder,但会排除exclude_list.txt中列出的文件和文件夹:

代码语言:txt
复制
!include "exclude_list.txt"

Section
    SetOutPath $INSTDIR\destination_folder
    File /r /x "${exclude_list}" "source_folder\*.*"
SectionEnd

在这个例子中,exclude_list.txt是一个包含要排除的文件和文件夹的文本文件,其格式为exclude_list="file1.txt file2.txt folder1 folder2"

总之,在使用NSIS进行安装程序制作时,可以使用File指令、FindFirstFindNext指令以及!include指令来在排除文件的同时递归复制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP递归实现文件复制、删除、查看大小操作示例

本文实例讲述了PHP递归实现文件复制、删除、查看大小操作。...文件是可以复制文件夹是不能复制(但可以创建),如果要达到复制文件效果,就需要生成一个和原始文件夹相同目录结构文件夹,然后将文件按照原目录结构复制到新文件夹。...按照递归思想,不用一开始就生成完整目录结构,只需要遍历当前目录,发现文件夹不存在再创建即可,然后再将文件复制到对应文件夹。...使用递归处理逻辑是,找到当前目录下所有文件文件夹,删除其中所有文件,再遍历下一层目录删除所有文件……直至最后一层目录,此时整个文件夹已经没有文件了(但是文件夹还在),此时递归开始返回,每向上返回一层就删除这一层所有空目录...,当返回到最顶层/【本文中一些PHP版本可能是以前,如果不是一定要,建议PHP尽量使用7.2以上版本】/时候,递归就结束了,同时所有的文件和目录也都删除了。

85020

PHP递归实现文件复制、删除、查看大小操作示例

本文实例讲述了PHP递归实现文件复制、删除、查看大小操作。...文件是可以复制文件夹是不能复制(但可以创建),如果要达到复制文件效果,就需要生成一个和原始文件夹相同目录结构文件夹,然后将文件按照原目录结构复制到新文件夹。...按照递归思想,不用一开始就生成完整目录结构,只需要遍历当前目录,发现文件夹不存在再创建即可,然后再将文件复制到对应文件夹。...使用递归处理逻辑是,找到当前目录下所有文件文件夹,删除其中所有文件,再遍历下一层目录删除所有文件……直至最后一层目录,此时整个文件夹已经没有文件了(但是文件夹还在),此时递归开始返回,每向上返回一层就删除这一层所有空目录...,当返回到最顶层/ /时候,递归就结束了,同时所有的文件和目录也都删除了。

96420

NSIS 打包脚本基础

$PROFILE 用户个人配置目录。一个典型路径 C:\Documents and Settings\Foo。 该常量在 Windows 2000 及以上有效。...如果使用了 /nonfatal 开关且当文件未找到时使用警告来代替错误 如果使用了 /a 开关,则被添加文件属性将会保持 如果使用了 /r 开关,匹配文件将会在子目录里被递归搜索。...如果目录名匹配则所有包含内容都会被递归添加,目录结构也会被保持 使用 /x 开关可以用来来排除文件或目录 例: 将ProjectFiles目录下所有文件释放到输出目录 SetOutPath "$...作用:创建 (递归创建) 指定目录。...$0 "a bbbbbbbb" 3就有$0 = "a b" StrCmp 作用:比较(不区分大小写)“字串1”和“字串2”,如果两者相等,跳转到“相同时跳转标记”,否则跳转到“不相同时跳转标记”。

4.5K60

何在 Linux 中使用 chown 命令递归更改文件和目录用户和组所有权?

您可以在 Linux 中使用 chown 命令更改文件和目录所有权,使用起来非常简单。...owner_name:group_name folder_name让我们详细看看它,并看看如何递归地更改用户和组,如果您熟悉文件所有权和权限概念,事情就会更容易理解。...⚠️ 您需要成为 root 或使用 sudo 来更改文件所有权。...递归 chown要递归更改目录所有权,请像这样使用它:chown -R new_owner_name directory_name如果您必须更改多个目录及其内容所有权,您可以在同一行中执行此操作:chown...要递归更改目录所有者和组及其所有内容,请使用 chown 命令,如下所示:chown -R user_name:group_name directory_name您可以使用相同方法更改多个文件所有权

14.3K30

GuLoader 转向使用 NSIS 历程

【PE 文件 NSIS 压缩数据】 垃圾邮件 2021 年 11 月,攻击者开始使用 NSIS 可执行文件前,研究人员发现了一个可疑 ZIP 文件。...【执行流程】 2022 年,攻击者转向使用 NSIS 可执行文件。例如将 NSIS 可执行文件嵌入在 ZIP 文件中或者 ISO 镜像文件中。...【ZIP 文件 NSIS】 【ISO 镜像文件 NSIS】 在压缩文件与镜像文件中嵌入可执行文件是能够进行检测逃避,在野发现可用于嵌入 NSIS 可执行文件格式如下所示: 【格式列表】...【简单 NSIS 脚本】 后来,攻击者开始使用混淆 NSIS 脚本。在 2022 年 4 月,攻击者对其进行两次改进。首先,Shellcode 文件扩展名从 .dat 更改为随机扩展名。...【使用 cmd 或 powershell 解密】 字符串加密 此前,加密字符串位于 GuLoader 特定位置,加密数据和加密数据长度复制并传递给解密函数。

63430

windows nsis安装包制作

3.06.1/nsis-3.06.1-setup.exe 使用方式 NSIS EDIT:使用向导创建打包脚本 菜单栏: 文件 -> 新建脚本:向导 下一步 NSIS_1.png ------ 填写对应安装包信息...英语) NSIS_3.png ------ 选择对应许可证文件 下一步 许可证文件: BOM-UTF-8格式TXT NSIS_4.png ------ 选择安装包需要添加文件文件夹 下一步...文件:右侧第一个图标 文件夹:右侧第二个图标 NSIS_5.png ------ 选择需要生成快捷方式(默认即可) 下一步 NSIS_6.png ----- 选择安装包启动参数(如果没有,...默认即可) NSIS_7.png ------ 卸载程序相关(非特殊需要,默认即可) 下一步 NSIS_8.png ------ 保存脚本信息 完成 NSIS_9.png ------ 保存安装包脚本到磁盘...NSIS_10.png ------ 保存完成之后会自动打开刚刚创建脚本 菜单栏: NSIS(N) -> 编译脚本 编译完成之后,底部输出框显示编译结果及保存位置 NSIS_11.png

2.8K00

如何使用 TmpwatchTmpreaper 删除旧文件

什么是 tmpwatch tmpwatch 会在指定目录中递归删除指定时间段内未被访问文件。通常,它用于自动清除临时文件系统目录,例如 /tmp 和 /var/tmp。...除非是更改文件属性,否则大多数情况下 ctime 和 mtime 会相同。 ctime(文件上次更改时间):显示文件元数据更改时间。这意味着更改文件属性时间(所有权或组等)。...例如,运行以下命令以递归方式删除过去 5 个小时未访问文件。 # tmpwatch 5 /tmp 运行以下命令删除最近 10 个小时未修改文件。...# tmpwatch -am 12 /tmp 如何在 tmpwatch 中排除目录 以下命令将删除过去 10 个小时未修改所有文件,并排除目录。...# tmpwatch -am 10 --nodirs /home/daygeek/Downloads 如何在 tmpwatch 中排除特定路径 以下命令将删除过去 10 个小时未被修改所有文件,除了下面排除文件

3.7K10

Notepad2替代系统自带记事本

事情是这样,平时我经常把一些文字复制到记事本中编辑好了再复制到目标位置,可以在系统自带记事本中替换删除一些内容,记事本小巧,占用很少资源,我很喜欢;但今天复制内容中有很多数字和一些我不想要内容...Notepad2是一个相当优秀轻量级文本编辑器,开源软件,具有很多特色功能,代码高亮、编码转换、行号显示、多步Ctrl+Z等,是不可多得记事本替代方案。...而 Notepad2-mod 是 Notepad2 修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 ?...,INI, REG, INF, BAT,DIFF等众多脚本文件。...使用了几天后发现一个问题我把notepad2编辑过txt文档发给没有安装该软件电脑上使用时换行挂了,另外从中间复制出来内容贴到word中去段落标记好像也有些问题。

1.8K20

Notepad2替代系统自带记事本Notepad

Notepad2替代系统自带记事本Notepad 原博文链接:https://www.cnblogs.com/best/p/5819858.html 事情是这样,平时我经常把一些文字复制到记事本中编辑好了再复制到目标位置...Notepad2是一个相当优秀轻量级文本编辑器,开源软件,具有很多特色功能,代码高亮、编码转换、行号显示、多步Ctrl+Z等,是不可多得记事本替代方案。...而 Notepad2-mod 是 Notepad2 修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 ?..., INI, REG, INF, BAT, DIFF等众多脚本文件。    ...文档发给没有安装该软件电脑上使用时换行挂了,另外从中间复制出来内容贴到word中去段落标记好像也有些问题。

2.5K20

公司居然把所有在线音乐都屏蔽了,所以我决定......

如何将应用程序打包(Win) 1、关于package.js文件详解 完整实例如下: "build": { "productName":"xxxx",//项目名 这也是生成exe文件前缀名..."output": "build" }, "nsis": { "oneClick": false, // 是否一键安装 "allowElevation": true...打包 electron-builder比electron-packager有更丰富功能,支持更多平台,同时也支持了自动更新。...「特点:」 1、electron-builder 可以打包成msi、exe、dmg文件,macOS系统,只能打包dmg文件,window系统才能打包exe,msi文件; 2、几乎支持了所有平台所有格式...整体感受 万事开头难,在开发环境搭建及应用程序打包方面花费时间是最多,目前网上博主真的好多,但是靠谱真的很少,大部分都是复制别人,真的很坑。

85320

BetterZip 5 for Mac(苹果专用解压缩软件) v5.3中文注册版

BetterZip 5 for Mac是一款运行在苹果电脑上面的解压神器,支持市面上所有的压缩格式、支持压缩包加密,而且不用解压即可预览文件同时还具有窗口式查看界面,解压部分文件等功能,这款mac解压工具支持格式包括...zip、gz、bz、bz2、tar、tgz、tbz、rar、7-zip、cpio、 arj、lha、lhz、cab、iso、chm、rpm、deb、nsis、sit、dd、hqx和bin等多种格式文件...此外,它还能让你Mac文件在Windows 和Linux系统中兼容,是名副其实Mac装机必备软件!...文件夹路径显示在存档内容上方,可让您轻松导航到所有父文件夹,并允许您直接将项目放入其中。...现在,恢复卷处理方式与多卷rar存档其他部分相同。文件类型配置要用于查看某些文件类型应用程序以及如何在预览侧栏中处理它们。

71730

rsync 实现文件同步

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过文件。rsync 在传输数据过程中可以实行压缩及解压缩操作,因此可以使用更少带宽。...DST,并且文件时间晚于要备份文件; --delete 删除那些target中有而source没有的文件; -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性不变,相当于使用了组合参数...可以使用--suffix选项来指定不同备份文件前缀。 --backup-dir 将备份文件(~filename)存放在在目录下。...=NUM 决定文件是否时间相同时使用时间戳窗口,默认为0 -T --temp-dir=DIR 在DIR中创建临时文件 --compare-dest=DIR 同样比较DIR中文件来决定是否需要备份...=PATTERN 指定不排除而需要传输文件模式 --exclude-from=FILE 排除FILE中指定模式文件 --include-from=FILE 不排除FILE指定模式匹配文件

1.2K10

利用Rsync同步备份服务器数据

对子目录以递归模式处理 -R, --relative 使用相对路径信息 -b, --backup 创建备份,也就是对于目的已经存在有同样文件名时,将老文件重新命名为~filename。...可以使用--suffix选项来指定不同备份文件前缀。 --backup-dir 将备份文件(~filename)存放在在目录下。... 使用和CVS一样方法自动忽略文件,用来排除那些不希望传输文件 --existing 仅仅更新那些已经存在于DST文件,而不备份那些新创建文件 --delete 删除那些DST中SRC没有的文件...--modify-window=NUM 决定文件是否时间相同时使用时间戳窗口,默认为0 -T --temp-dir=DIR 在DIR中创建临时文件 --compare-dest=DIR 同样比较DIR...--include=PATTERN 指定不排除而需要传输文件模式 --exclude-from=FILE 排除FILE中指定模式文件 --include-from=FILE 不排除FILE指定模式匹配文件

2.6K10

Electron实用技巧-electron-builder中用户协议(license)使用及多语言支持

# 1 通常pc软件安装过程中,会加入用户协议,: 下面介绍一下使用electron-builder打包应用,如何加入license。...首先参考官网介绍:windows:nsis[1],macOS:dmg[2] # 2 官网上关于license配置说明写不是很详细,下面是我实践总结出正确姿势: 最简单方法是在你项目/build...目录下新建license.text文件,然后正常打包就可以了,无需其他设置。...# 3 如果要支持多语言,只需修改license文件名添加对应语言代码后缀,:license_xxx.txt。...: true, }, 打包后安装,选择语言: 英文: 中文: macOS: 参考资料 [1] nsis: https://www.electron.build/configuration/nsis [

2.3K40

linux两台服务器之间传输文件文件

scp 【优点】简单方便,安全可靠;支持限速参数 【缺点】不支持排除目录 【用法】scp就是secure copy,是用来进行远程文件拷贝。...1.命令格式:rcp [参数] [源文件] [目标文件] 2.命令功能: rcp命令用在远端复制文件或目录,如同时指定两个以上文件或目录,且最后目的地是一个已经存在目录,则它会把前面指定所有文件或目录复制到该目录中...: rcp webserver1:/home/root/test2 otherdir/otherfile Enter 使用实例4:将目录复制到远程系统:要将本地目录及其文件和子目录复制到远程系统,请同时使用...本示例假定用户处于包含 work 本地目录下。否则,必须提供该目录相对或绝对路径, /home/root/work。...使用实例6:从远程系统复制目录: 要将远程目录及其所有文件和子目录复制到本地目录,请在以下语法中使用 rcp 和 -r(递归)选项。

1.3K60
领券