如何从文件夹中获取文件名列表,并在特定位置拆分名称?

时间:2018-07-16 17:31:36

标签: regex powershell split

我有一个要从文件夹中获取到的文件名列表,将它们拆分成一个数组,以便将文件名“ Application_install_versionnumber.exe”作为“应用程序”进入数组。我正在使用此数组对我从注册表中获取的另一个数组进行检查。

$FileNames = Get-ChildItem -Path "Path to files" | Select -expand basename
$Installed = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*Keyword* |Select-Object -ExpandProperty DisplayName
$Installed += Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*Keyword2* |Select-Object -ExpandProperty DisplayName
$Installed | Where-Object { $_ -in $Filenames }

老实说,我一直试图了解REGEX的工作原理,但我只是想不通。我去过多个站点尝试学习它,但我根本不了解。我什至试图挑选别人的榜样来建立我自己的榜样。实际上,我只需要它在找到的第一个下划线处分开,而忽略下划线及其后的所有内容。

我的目的是针对正在构建的自动化安装自动进行版本检查,但我只希望它检查注册表以查找正在安装的文件夹中的已安装项目,而不是每次都检查所有内容。老实说,这不是一个庞大的列表,每次完成时仅列出注册表中的内容并进行处理是非常合理的,但是我有这个主意,我无法弄清楚...现在它在困扰我我不知道该怎么做。

这最终将被发送到电子邮件中,并发送给一个小组,以验证自动安装是否成功完成。我可以做到这一点。

1 个答案:

答案 0 :(得分:1)

对于您的问题,您根本不需要正则表达式。假设您所有的文件名都以<applicationname>_install_<version>.exe格式进行格式化,则可以使用System.String的{​​{1}}方法:

.Split()