No powershell
$FilePath = 'production.exe'
$lastWrite = (get-item $FilePath).LastWriteTime
$timespan = new-timespan -minutes 15
if (((get-date) - $lastWrite) -lt $timespan) {
# do this if file newer
} else {
# do this if file older
}
"Windows PowerShell® é uma linguagem de script e de shell de linha de comando baseada em tarefas projetada especialmente para administração de sistema. Criada no .NET Framework, o Windows PowerShell ajuda profissionais de TI e usuários avançados a controlar e automatizar a administração do sistema operacional Windows e aplicativos que são executados no Windows.
Os comandos do Windows PowerShell, chamados de cmdlets, permitem gerenciar os computadores a partir da linha de comando. Os provedores do Windows PowerShell permitem acessar os repositórios de dados, como o registro e o armazenamento de certificados, tão facilmente quanto você acessa o sistema de arquivos. Além disso, o Windows PowerShell possui um analisador de expressões avançado e uma linguagem de script totalmente desenvolvida. "
Execute um prompt de comando (Iniciar, Executar, cmd e OK) digite powershell, em seguida, pressione Enter. Você deve então obter o prompt do PowerShell PS
O Powershell é um complemento do MS Server 2003 Se ainda não foi instalado no seu servidor e você quer saber como instalar, existe um blog do MS TechNet
salve scripts do PowerShell com extensão .ps1
você pode chamar um script do powershell do Batch
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "& 'powershellscriptname.ps1'"
e também chamam batch de dentro do Powershell
start-process C:\batch.bat
Dando-lhe um arquivo .ps1 para chamar algo assim
Move-Item c:\lighthouse\production.exe c:\lighthouse\production_old.exe -force -ErrorAction SilentlyContinue
$files = @("c:\lighthouse\production.exe","c:\RAR_and_Mail\production.exe")#,"i:\production.exe")
foreach ($file in $files){
Copy-item c:\production\backup\production.exe $file -force
}
Start-Sleep -s 300
$FilePath = 'c:\lighthouse\production.exe'
$lastWrite = (get-item $FilePath).LastWriteTime
$timespan = new-timespan -minutes 15
if (((get-date) - $lastWrite) -lt $timespan) {
# do this if file newer
Copy-item "c:\RAR_and_Mail\*.rar" "c:\RAR_and_Mail\old\*.rar" -force -ErrorAction SilentlyContinue
Remove-Item "c:\RAR_and_Mail\*.rar"
$MyDate = get-date
$Rarfile = "c:\RAR_and_mail\" + "$MyDate" + "_production.rar"
& "C:\Program Files\WinRAR\rar" a r "$Rarfile" "c:\RAR_and_mail\*.exe"
start-process c:\batches\SendMail_Executable.bat
} else {
# do Nothing, file older.
}
Ou simplesmente adicione e execute isso
start-process "insert 1st_bat_file path here"
$FilePath = 'production.exe'
$lastWrite = (get-item $FilePath).LastWriteTime
$timespan = new-timespan -minutes 15
if (((get-date) - $lastWrite) -lt $timespan) {
# do this if file newer
start-process "insert 2nd_bat_file path here"
start-process c:\batches\SendMail_Executable.bat
} else {
# do this if file older
}