2017-06-05 16 views
0

私はPowerShellの初心者ですからダンプに関するご質問は申し訳ありません。ディレクトリにはたくさんのファイルがあります。ファイルを使用して別のディレクトリに移動すると、そのディレクトリには常に増減があります。Powershell、テキストファイルに保存されている部分名とファイル名を一致させる方法

私たちは、ファイル名の部分的な名前しか持たないtxtファイルに優先順位ファイルリストを持っています。

例えば、ファイル名のために:

2017年6月5日---優先順位リストで666-12-05-01.txt

、私は部分を持っています名前は---666---です。

Powershellを使用して、フォルダ内のファイルがすでに優先度リストにあるかどうかを確認するにはどうすればよいですか?

私は与えられた時間よりも古いファイルしか必要としないので、以下のスクリプトを書いています。しかし、それは動作していません。

Get-ChildItem -path $Struct.Path -filter $Struct.filter | 
Where-Object {$_.CreationTime -lt $time} | 
Where-Object {$_.Name -contains "*$PriorityList*"} | 
ForEach-Object { $counterP++} 
+0

に取り組んでいます。 –

+0

ディレクトリに優先度ファイルがいくつかあるにもかかわらず、0のファイルが表示されるため、この行でスクリプトが間違っていると思います。私は与えられた時間よりも古いファイルだけを取得するためにスクリプトを使用しているので、それは動作していますが、今はファイルが指定された時間より古いかどうかを知る必要があります。コメント – nael

答えて

0

まず、例のファイル名が部分名と一致しません。パターンが"666"と仮定しましょう。あなたはいくつかのパターンがある場合は、一つのフィルタでそれらに参加することができます。

$PriorityList = "---666---","---555---" 
$PriorityFilter = $PriorityList -join '|' 

そして、Nameプロパティをチェックするために、このフィルタを使用します。

Get-ChildItem -path $Struct.Path -filter $Struct.filter | 
Where-Object {$_.CreationTime -lt $time} | 
Where-Object {$_.Name -match $PriorityFilter | 
ForEach-Object { $counterP++} 

-contains演算子は、左オペランドとしてコレクションで動作しません一致のためにワイルドカードを受け入れる。

+0

答えをありがとう、それは常に値として1を返しますが、優先度のファイルリストに一致するディレクトリ内の複数のファイルがありますか? – nael

0

私はあなたのコードを更新しているとあなたはそれが動作しませんでした_how_言わなければならない、何かがうまくいかなかったことを言うとき、今では完全に

Get-ChildItem -path $Struct.Path -filter $Struct.filter | 
Where-Object {$_.CreationTime -lt $time} | ForEach-Object { If($_.name - 
Match $Priorfilter) { $counterP++ } 
関連する問題