腳本/批次如果目錄有一定年齡,則執行 .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.我還添加了輸出行,以便對它選擇的資料夾有一定的可見性 - 只是為了幫助您調試。

相關內容