次のような規則で命名されたフォルダのディレクトリをPowerShellでスキャンします。yyyymmdd。ディレクトリをスキャンし、現在および最大1週間前のすべてのフォルダを見つけて、別のディレクトリにコピーします。それを他のディレクトリにコピーした後、新しいディレクトリのフォルダを同じ方法で削除し、18か月以上経過していないフォルダを削除したいと思います。これを行う簡単な方法がありますか?私は以下のスクリプトを貼り付けました。PowerShellスクリプトを使用してファイルを削除する
$targetDirectory
は、あなたは自分のスクリプトの末尾に以下を追加、(18ヶ月よりも古いもの)を削除したいファイルが含まれていると仮定すると、
$targetdirectory = "\\DPR320-W12-1600\PRTG"
$sourcedirectory = "C:\Users\Public\Documents\PRTG Traffic Grapher"
$todaysdate=get-date
$minusoneweek=$todaysdate.adddays(-7)
$minusdate=($minusoneweek.Month).tostring(),($minusoneweek.day).tostring(),($minusoneweek.year).tostring()
$todaysdatestring=($todaysdate.Month).tostring(),($todaysdate.day).tostring(),($todaysdate.year).tostring()
$oldfilename=$minusdate[0]+$minusdate[1]+$minusdate[2]+" backup"
$newfilename=$todaysdatestring[0]+$todaysdatestring[1]+$todaysdatestring[2]+" backup"
Get-ChildItem $sourcedirectory\config | Where-Object {
$_.PsIsContainer -and
$_.BaseName -match '\d{6}' -and
([DateTime]::ParseExact($_.BaseName, 'yyyyMMdd', $null) -gt (Get-Date).AddDays(-7))
} |Copy-Item -Recurse -Force -Destination $targetdirectory\$oldfilename\config
Copy-Item -Force $sourcedirectory\config.csv -Destination $targetdirectory\$oldfilename
Copy-Item -Force $sourcedirectory\config.prtg -Destination $targetdirectory\$oldfilename
rename-item $targetdirectory\$oldfilename $newfilename
必ずしもその名前の規則に従わないフォルダがあります。スクリプトがそれらを無視するようにするにはどうしたらよいのですか? –
アイデアを示すためにいくつかの例を挙げることができます。これまでは、ParseExactが実際にフォルダ名から日付をフェッチできるかどうかをチェックすることしか考えられませんでした。 –