0

こんにちは、指定したフォルダー内のファイルを自動削除するスクリプトを作成しました。

$oldTime = [int]25 # 0 days
$old2Time = [int] 10 
foreach ($path in "C:\Test") {
Write-Host "Trying to delete files older than days, in the folder $path" -    
ForegroundColor Green
# Write information of what it is about to do   
Get-ChildItem $path -Recurse -Include "*.txt", "*.docx", "*.xlsx" #| WHERE    
{($_.CreationTime -le $(Get-Date).AddDays($oldTime))} #| Remove-Item -Recurse -Force}
if ($_.CreationTime -le $(Get-Date).AddDays(-$oldTime)) 
{
Remove-Item -Recurse -Force
}
elseif ($_.CreationTime -le $(Get-Date).AddDays(-$old2Time))
{   
Remove-Item -Recurse -Force
}
}
# deleting the old files

以前は、一度チェックして古いものを削除するだけで機能しました。ただし、特定の日数より古いファイルが存在するかどうかを確認してから削除したいと思います。そうでない場合は、別の日数よりも古いかどうかを確認してください。しかし、私がそれを実行すると、「コマンドパイプラインの位置1でコマンドレットRemove-Itemが次のパラメーターの値を指定します:パス[0]:」が表示されます。

誰かが私が間違っていることを知っていますか? ありがとう

4

2 に答える 2

3

Remove-Item を呼び出していますが、何を削除するかを指定していません。削除するファイルのパス/名前を指定する必要があります。また、-Recurse パラメーターを使用する理由もありません。

于 2013-08-28T15:13:32.137 に答える