スクリプト/バッチ ディレクトリが一定の期間を経過したら .exe を実行します

スクリプト/バッチ ディレクトリが一定の期間を経過したら .exe を実行します

現在、フォルダーが存在するかどうかを確認し、存在する場合はその中のアンインストール exe を実行し、msi を使用してプログラムをインストールするバッチ ファイルがあります。続行する前にフォルダーの経過時間を確認するように、このファイルを変更するか、PowerShell に変換する必要があります。使用しようと考えていた経過時間は、12 か月以上前のものです。何度も遭遇した問題は、名前の末尾が各コンピューターでわずかに異なるため、ディレクトリが存在するかどうかを確認するためにワイルドカードを使用する必要があることでした。これが、経過時間に関連するものを含めずに、これまでのところ作成したものです。

@echo off
IF exist C:\ProgramData\bomgar*  ( goto Uninstall ) ELSE ( goto Install )

:Uninstall
cd C:\ProgramData\bomgar* 

remove.exe

:Install
msiexec /i "C:\pathtomsi" 

:End
Echo Test Complete

ご協力やアドバイスをいただければ幸いです。

答え1

Powershell でも同様にワイルド カードを使用できます。また、マイナス 12 か月を追加して日付の比較を完了することもできます。

$folders = Get-Item "C:\ProgramData\bomgar*" | Where-Object {
   $_.PSIsContainer -and $_.CreationTime -le (Get-Date).AddMonths(-12)
}

結果が返された場合はアンインストールし、そうでない場合はインストールします。

If ($folders) {
   Foreach ($folder In $folders) {
      "UNINSTALL $($folder.FullName) - $($folder.CreationTime)"
   }
} Else {
   "INSTALL $($folder.FullName) - $($folder.CreationTime)"
}

編集:おそらく、より大きいか等しい ( -ge) に論理エラーがありました。 に変更してみてください-le。また、デバッグを支援するために、どのフォルダーが選択されているかがわかるように出力行を追加しました。

関連情報