該Select-String cmdlet返回一個Microsoft.PowerShell.Commands.MatchInfo
對象的列表。如果調用Get-Member cmdlet和參數-MemberType Properties
你會得到所有公開的屬性的列表:
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
方法GetFileNameWithoutExtension來完成:
Select-String -Path c:\cnt\*.txt -pattern "0" |
ForEach-Object { [io.path]::GetFileNameWithoutExtension($_.FileName)}
輸出:
itm123
itm1234
itm123456
要澄清,您只需要文件名,沒有路徑?例如itm1234.txt:1:0 –
您正在查找的文件是否由單個「0」字符組成?其他文件呢? –