2016-06-22 11 views
1

私は、番号0のみを含むファイルを探しているディレクトリを検索しています。Powershell Match Statementファイル一覧から

は、私は、コードを使用している:

$fileList = Select-String -Path c:\cnt\*.txt -pattern "0" 

をそして、それは、次のような、リストを出力します。

私だけの範囲であることができるファイル名に itm###が、合計の数字を抽出する必要が
C:\cnt\itm123.txt:1:0 
c:\cnt\itm1234.txt:1:0 
c:\cnt\itm123456.txt:1:0 

3-6。

私は次のようになり、リストを必要とする上記の例を使用:

itm123 
itm1234 
itm123456 

私はSQLクエリを介して実行することを得るが、私はその部分を心配していないですしたら。

+0

明確にするために、パスなしでファイル名のみが必要ですか?例:itm1234.txt:1:0 –

+0

探しているファイルが1つの "0"文字で構成されていますか?他のファイルはどうですか? –

答えて

2

Select-StringコマンドレットはMicrosoft.PowerShell.Commands.MatchInfoオブジェクトのリストを返します。

この場合
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プロパティを探している:あなたは、パラメータ-MemberType PropertiesGet-Memberコマンドレットを呼び出した場合、あなたはすべて公開されたプロパティのリストを取得します。あなたは

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 
関連する問題