Windows

腳本/批處理如果目錄是某個年齡,則執行 .exe

  • October 15, 2015

我目前有一個批處理文件,它查看文件夾是否存在,如果存在,它會在其中執行解除安裝 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

任何幫助或建議將不勝感激。

在 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. 我還添加了輸出行,因此可以看到它正在選擇的文件夾 - 只是為了幫助您調試。

引用自:https://serverfault.com/questions/728694