2017-03-08 4 views
0

Get-ChildItemを使用して作成したファイル名のリストを持つCSVがあります。 このリストを取得して、特定の文字( "、|、 '、<など)を含む項目のリストを作成します。PowerShell:禁止された文字のリストを使用したファイル名のリストのフィルタ

私は次のスクリプトを作成しました。ファイル名に?でファイルをフィルタリングすることはできませんよ。私もそれ少しよりクリーンで簡単なようにしたいと思います。任意のアイデア?

$csv = Import-Csv .\FILES.CSV 

$csvexport = $null 

$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*'*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*%*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*|*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*#*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*:*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*<*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*>*"}) 

$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*/*"}) 
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*\*"}) 

$csvexport | export-csv .\filesupdated.csv -NoTypeInformation -NoClobber 
+1

コードの形式が適切になるように質問を編集してください。 –

+0

@Bill_Stewart:完了!ハッシュ記号が太字になってしまうことは分かりませんでした。ありがとう – Jonathan

答えて

2

(正規表現の略)正規表現の代わりに、一致を使用します-like比較演算子リストされた文字と疑問符と二重引用符との一致を試みます。先行するバックスラッシュはエスケープ文字です。それがリテラルの一致であることを確認し、各文字の間のパイプは 'または'を意味し、文字のいずれかを探します。あなたがのためにそれを使用しようとしている場合を除き、それは、それを必要としない場合でも、文字をエスケープして(私の知っていること)の文字の一部をエスケープする必要はないかもしれないが、害はありません

$csv = Import-Csv .\FILES.CSV 

$csvexport = $null 

$csvExport = $csv | select name,length |Where-Object {$_.name -match "\`"|\'|\%|\||\#|\:|\<|\>|\/|\\|\?"} 

$csvexport | export-csv .\filesupdated.csv -NoTypeInformation -NoClobber 

特別なキャラクターの目的は、私たちはそうではありません。

関連する問題