2016-09-09 4 views
0

多くのフォルダに埋め込まれているログファイルを削除するスクリプトを見つけようとしています。終了フォルダーと同じパスから、変更されるクライアント名フォルダーを差し引いたパス。以下は恐ろしく失敗していると思うコードの例です。アドバイスをいただければ幸いです。powershellに埋め込まれたログファイルを削除する

gci X:\ -directory -recurse | ?{$_.FullName -match \\temp\\company\\.+?\\AppData\\logfiles -and $_.CreationTime -lt (get-date).AddDays(-20)}|Remove-Item -recurse -whatif 

ので、ディレクトリはXであると私は削除するログファイルへのパスがtemp\company\NAME\appdata\logfilesで、NAMEフォルダが異なるクライアント名の任意の数のいずれかになりますものです。

エラー

At line:1 char:51 
+ gci X:\ -directory -recurse | ?{$_.FullName -match \\temp\\company\\.+?\\ ... 
+             ~ 
You must provide a value expression on the right-hand side of the '-match' operator. 
At line:1 char:52 
+ gci x:\ -directory -recurse | ?{$_.FullName -match \\Temp\\company\\.+?\\ ... 
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Unexpected token '\\Temp\\company\\.+?\\AppData\\logfiles' in expression or statement. 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : ExpectedValueExpression 

私たちが間違ってやっていることや誰がこの目標をどのように達成しているのでしょうか?

ありがとうございます!

+0

どのように失敗しますか?あなたの正規表現が文字列引用符ではないのはなぜですか? 'gci x:\ temp \ company \ * \ appdata \ logfiles \ * |どこの{...日付テスト} '? – TessellatingHeckler

+0

私は連続的にエラーを追加しました – Norrec

+0

あなたの正規表現を文字列引用符 '\\ temp \\ company \\。+?\\ AppData \\ logfiles'' – TessellatingHeckler

答えて

0

エラーは、-matchの第2引数が引用符で囲まれている必要があるためです。

しかし、例の複雑さを必要とせずにこれを行う方法があるかもしれません。 Get-ChildItemは、-Pathと-Include(または-Filter)の両方の引数を取ることができます。したがって、次のようなものを使用することがあります。

Get-ChildItem -path c:\xxx -Include *log.tmp -Recurse | ... | Remove-Item 
関連する問題