[Batch] File version vergelijken / installatie

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • killerbeast
  • Registratie: April 2009
  • Laatst online: 19-03 15:14
Ik ben op dit moment bezig om een batch script te maken om 2 EXE files op versie nummer met elkaar te vergelijken. Wat ik wil is 2 EXE files (1 EXE file van een geïnstalleerd programma en 1 exe file van een windows installer (setup) met elkaar vergelijken.

Als het versie nummer van het EXE bestand van de windows installer hoger is dan de versie van de EXE file van het geinstalleerde programma dat dan de setup.exe unattended word uitvoert.

Het volgende script heb ik al :

@echo off
FOR /F "tokens=2 delims==" %%I in (
'wmic datafile where "name='C:\\Program Files (x86)\\Programma naam\\Programma naam\\programma.exe'" get version /format:list'
) DO (SET "RESULT=%%I")

FOR /F "tokens=2 delims==" %%J in (
'wmic datafile where "name='C:\\programma\\Setup.exe'" get version /format:list'
) DO (SET "RESULT=%%J")

IF %%J GTR %%I goto INSTALL
IF %%J LEQ %%I goto END

:INSTALL

Start "C:\programma\" Setup.exe

:END


Het enige wat nu mis gaat is dat hij altijd de setup uitvoert en dat dus niet versie vergelijking doet

Hebben jullie enig idee wat ik niet goed doe? Of mis ik wat in mijn script?

Alvast bedankt!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

%%I en %%J bestaan niet meer na het uitvoeren van de commandoregel

QnJhaGlld2FoaWV3YQ==


Acties:
  • 0 Henk 'm!

  • killerbeast
  • Registratie: April 2009
  • Laatst online: 19-03 15:14
Bedankt voor je reactie! Hoe zou ik het dan kunnen aanpakken?

Acties:
  • 0 Henk 'm!

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 04-10 15:09

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
FOR /F "tokens=2 delims==" %%I in (
'wmic datafile where "name='C:\\Program Files (x86)\\Programma naam\\Programma naam\\programma.exe'" get version /format:list'
) DO (SET "RESULT_A=%%I")

FOR /F "tokens=2 delims==" %%J in (
'wmic datafile where "name='C:\\programma\\Setup.exe'" get version /format:list'
) DO (SET "RESULT_B=%%J")

IF %RESULT_A% GTR %RESULT_B% goto INSTALL
ELSE goto END

:INSTALL

Start "C:\programma\" Setup.exe

:END

zoiets... :)

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


Acties:
  • 0 Henk 'm!

  • killerbeast
  • Registratie: April 2009
  • Laatst online: 19-03 15:14
Question Mark bedankt voor het reageren! Ik ga dit eens proberen of het werkt. Ik laat het hier wel weten.

Acties:
  • 0 Henk 'm!

  • killerbeast
  • Registratie: April 2009
  • Laatst online: 19-03 15:14
Question Mark bedankt! Deze methode werkt!. Ik heb nog wel een ander vraagje, wat ik er ook graag wil inbouwen is als de er geen programma (NOT EXIST) geïnstalleerd is (dus geen waarde bij "RESULT_A". dat hij sowieso de installatie opstart.

Heb jij enig idee wat en waar ik dat het beste in het script kan plaatsen?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Lieve mensen, stap a.u.b. af van batch...

Heb je een Windows OS, gebruik PowerShell!


PowerShell:
1
2
3
4
5
6
7
8
9
10
$file01 = (Get-Command C:\users\Username\Desktop\File01.exe).Version
$file02 = (Get-Command C:\users\Username\Desktop\File02.exe).Version

if($File01.Major -eq "1") {
  Write-Host "Start setup"
}

if($File01.Major -lt $File02.Major) {
  Write-Host "File01 is kleiner dan File02"
}


Die eerste if statement kijkt of de major verson 1 is, zo ja zou je de setup altijd kunnen aftrappen. De tweede if statement kijkt of de major version van File01 kleiner is dan File02 en zo ja, doe wat.

Je zou zo ook kunnen kijken naar minor versions etc. Het is wat je wil ...

  • killerbeast
  • Registratie: April 2009
  • Laatst online: 19-03 15:14
Bedankt Squ1zZy ! ik ga dit is even proberen
Pagina: 1