스크립트/배치 디렉토리가 특정 연령이면 .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. 또한 디버깅을 돕기 위해 출력 라인을 추가하여 어떤 폴더가 선택되는지 확인할 수 있게 했습니다.

관련 정보