現在、フォルダーが存在するかどうかを確認し、存在する場合はその中のアンインストール 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
。また、デバッグを支援するために、どのフォルダーが選択されているかがわかるように出力行を追加しました。