文件列表中的Powershell匹配语句

文件列表中的Powershell匹配语句,powershell,Powershell,我正在目录中搜索只包含编号0的文件 我使用了以下代码: $fileList = Select-String -Path c:\cnt\*.txt -pattern "0" 并输出一个列表,例如: C:\cnt\itm123.txt:1:0 c:\cnt\itm1234.txt:1:0 c:\cnt\itm123456.txt:1:0 我只需要提取itm####,但文件名中的总数可以在3-6之间 使用上述示例,我需要一个如下所示的列表: itm123 itm1234 itm123456 一旦

我正在目录中搜索只包含编号
0
的文件

我使用了以下代码:

$fileList = Select-String -Path c:\cnt\*.txt -pattern "0"
并输出一个列表,例如:

C:\cnt\itm123.txt:1:0
c:\cnt\itm1234.txt:1:0
c:\cnt\itm123456.txt:1:0
我只需要提取
itm####
,但文件名中的总数可以在3-6之间

使用上述示例,我需要一个如下所示的列表:

itm123
itm1234
itm123456
一旦得到该命令,我将运行每个SQL查询,但我不担心这一部分。

cmdlet将返回Microsoft.PowerShell.Commands.MatchInfo对象的列表。如果使用参数
-MemberType Properties
调用cmdlet,将获得所有公开属性的列表:

Name       MemberType Definition                                                       
----       ---------- ----------                                                       
Context    Property   Microsoft.PowerShell.Commands.MatchInfoContext Context {get;set;}
Filename   Property   string Filename {get;}                                           
IgnoreCase Property   bool IgnoreCase {get;set;}                                       
Line       Property   string Line {get;set;}                                           
LineNumber Property   int LineNumber {get;set;}                                        
Matches    Property   System.Text.RegularExpressions.Match[] Matches {get;set;}        
Path       Property   string Path {get;set;}                                           
Pattern    Property   string Pattern {get;set;}    
在本例中,您正在查找
Filename
属性。所以如果你执行

Select-String -Path c:\cnt\*.txt -pattern "0" | select FileName
您将获得所有文件名:

itm123.txt
itm1234.txt
itm123456.txt
现在,您所要做的就是删除文件扩展名,这可以使用
.NET
方法完成:

输出

itm123
itm1234
itm123456

为了澄清,您只需要文件名,而不需要路径?例如,itm1234.txt:1:0您要查找的文件是否由单个“0”字符组成?其他文件呢?
itm123
itm1234
itm123456