在编译时在NSIS中获取文件夹名称

奥迪Fanatic

我想根据构建它们的文件夹来动态命名我的EXE文件。因此,换句话说,如果我的NSIS脚本位于C:\[blah]\MyProjectDir\Nullsoft\并且我的项目位于C:\[blah]\MyProjectDir\MyProject\输出中,则NSIS可执行文件应该为MyProjectDir.exe为了简化起见,我显然混淆了名称,文件夹的结构对我们的团队具有实际意义。

基本上,我们的(已经写好了,很久以前)的NSIS脚本看起来像这样:

!define APP_NAME "OurGUI"
!define PROJ_NAME "OurGUI"
!define PATH_TO_FILES ..\${PROJ_NAME}\bin\Debug
!define EXEC_NAME "OurGUI.exe"
OutFile "GUI_Setup.exe"

还有很多可以处理诸如注册表项,安装等之类的事情。这是与我的问题有关的重要部分(因为我不想修改脚本的其余部分)。

我想将其更改为这样的内容

!define M_NUMBER !system "for %I in (..) do echo %~nxI"

!define APP_NAME "${M_NUMBER}/ Demo GUI"
!define PROJ_NAME "OurGUI"
!define PATH_TO_FILES ..\${PROJ_NAME}\bin\Debug
!define EXEC_NAME "M_Number.exe"
OutFile "${M_NUMBER}_GUI_Setup.exe"

我知道我的语法完全不对,但这就是想法。

运行命令for %I in (..) do echo %~nxI将为我返回祖父母目录的名称,这正是我想要的。现在,我需要弄清楚如何将其存储在某种变量中,以便可以在中使用它!define我需要以某种方式捕获输出到控制台(而不是在forNSIS脚本中返回的返回值始终为零。)理想情况下,我不必使用外部插件,因为这将是整个团队管理的噩梦。

作为一个不错的奖励,我也很希望能够操纵字符串(同样,在编译时可以在!defines中使用它

字符串遵循以下格式:SWD1234-567,但我想将其存储D1234567在另一个变量中,以用于其他重命名目的。因此,从原始字符串中删除“ SW”和“-”。

我愿意接受其他建议,但是作为NSIS的新手,这就是我提出的。

不同

您需要使用!system+!include习惯用法来读取外部命令的输出:

!tempfile MYINCFILE
!system 'for %I in (..) do echo !define MYDIR "%~nxI" > "${MYINCFILE}"'
!include "${MYINCFILE}"
!delfile "${MYINCFILE}"
!echo "${MYDIR}"

预处理器的字符串处理有限,但是可以删除已知的子字符串:

!define MYDIR "SWD1234-567"
!searchreplace MYDIR2 "${MYDIR}" "SW" ""
!searchreplace MYDIR2 "${MYDIR2}" "-" ""
!echo "${MYDIR2}" ; D1234567

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从不存在的(在编译时)文件夹中链接共享库

Nim中的单元测试:是否可以在编译时获取源文件的名称?

获取函数中的文件夹名称

从目录中获取文件夹名称

获取文件夹名称

如何使用Xamarin在编译时将内容放入iOS Documents文件夹?

获取文件夹名称时,NodeJS返回“ undefined”

通过名称在特定文件夹中获取文件

在Python中获取文件的文件夹名称

从具有指定文件夹名称的文件夹结构中获取文件名

从父文件夹中获取文件夹的名称和其中包含的文件的链接

在Google Apps脚本中获取文件夹名称

获取特殊目录中的文件夹名称

从字符串列表中获取文件夹名称

在测试脚本中获取文件夹名称

PowerShell获取路径中的文件夹名称

获取html中的父文件夹的名称

如何在prestashop中获取管理文件夹的名称?

Google Apps Script – 从文件夹 ID 中获取文件夹名称?

使用 NSIS 安装软件时,如何通过从目标文件夹中获取路径来检查驱动器中的空间

使用foreach循环时如何在SSIS中获取文件夹名称和文件名错误

是否有宏或类似的解决方法在编译时包含源文件夹(src)路径?

获取包含文件夹的名称

从路径获取文件夹名称

Fs:从 reddirSync 获取文件夹名称

在编译时获取变量名称的标准方法

如何获取目录的子文件夹名称,该名称在名称中也包含点?

复制文件/文件夹时,会将奇怪的字符添加到文件或文件夹名称中

在Android源包中获取子文件夹名称和文件名称的列表