NSIS读取文件名中的数字
我必须将文件解压缩到NSIS安装程序中的输出文件夹中。文件名包含其版本号。我需要一个方法来读取写在我的文件名中的数字 示例文件名:NSIS读取文件名中的数字,nsis,Nsis,我必须将文件解压缩到NSIS安装程序中的输出文件夹中。文件名包含其版本号。我需要一个方法来读取写在我的文件名中的数字 示例文件名: MyFile_4.3_runtime_80968_x64.exe 我使用以下代码自动读取它: Var Version Section ${GetFileVersion} "F:\FilesToBeInstalled\MyFile_4.3_runtime_?????_x64.exe" $Version MessageBox MB_OK "Versio
MyFile_4.3_runtime_80968_x64.exe
我使用以下代码自动读取它:
Var Version
Section
${GetFileVersion} "F:\FilesToBeInstalled\MyFile_4.3_runtime_?????_x64.exe" $Version
MessageBox MB_OK "Version: $Version"
SectionEnd
早些时候,它曾经对我有用。但它突然停止了工作。如果我写正确的数字而不是写?
,那么它就可以工作了。例如,以下代码适用于我:
Var Version
Section
${GetFileVersion} "F:\FilesToBeInstalled\MyFile_4.3_runtime_80698_x64.exe" $Version
MessageBox MB_OK "Version: $Version"
SectionEnd
读取文件的名称,但不解析文件名。这很可能是一个巧合,它以前起过作用
您可以使用在两个分隔符之间搜索:
!include "WordFunc.nsh"
Var Version
Var File
Section
# find instances of MyFile_4.3_runtime*
FindFirst $0 $File "F:\FilesToBeInstalled\MyFile_4.3_runtime*.exe"
loop:
StrCmp $File "" done
# parse hit for version string
${WordFind2X} $File "MyFile_4.3_runtime_" ".exe" "-1" $Version
DetailPrint "$File contains version $Version"
FindNext $0 $File
Goto loop
done:
FindClose $0
SectionEnd
行“${WordFind2X}”MyFile_4.3_runtime_80968.exe”“MyFile_4.3_runtime_.exe”“-1“$Version`使用
MyFile_4.3_runtime_80968.exe
ad,这是我的问题,我事先不知道文件名中存在80968
。我编辑了答案并添加了FindFirst以查找该名称模式的所有实例。如果您可以排除遵循命名模式的多个文件,您可以在第一次点击后中断循环。对不起,我忘了提到,\u x64
也出现在文件名.exe
之前。现在这将产生问题。如何处理这种情况?只需将其添加到第二个分隔符,例如“\u x64.exe”