afk009
Goto Top

über Batch Versionen vergleichen ggf. aktualisieren

Hallo Leute,
Kann mir jemand helfen mit einer Batch Datei?
Hab diese jetzt so, dass die beim Starten einfach die MDE Datei vom Server auf Local kopiert und dann Local gestartet.

@echo off
copy \\ueeb1p001\Projektverfolgung\Prio.mde H:\Prio.mde /y
start "C:\Programme\Microsoft Office\Office10\MSACCESS.EXE" "H:\Prio.mde" /runtime

jetzt würde ich gern so haben, dass diese Datei beim Starten nicht gleich kopiert wird, sondern erst die Versionsnummer der XXX.ini Datei überprüft?

Folgendeweise habe ich im Sinn.

@echo off
Prüfen ob Datei XXX.Ini local exestiert H:\XXX.ini
Prüfen ob Datei H:\Prio.mde local exestiert
Wenn nicht, dann beide Dateien vom Server kopieren
\\Test\Projektverfolgung\

Wenn beide Dateien local exestieren, dann die Versionen der ini Dateien miteinander vergleichen (Dateiinhalt Vers. 1.0.0) und wenn die ini auf dem Server höher ist, als local dann die ini und mde Dateien vom Server laden und mit localen ersetzten.

Danke im Voraus,
Gruß
Iggy

Content-Key: 91104

Url: https://administrator.de/contentid/91104

Printed on: April 23, 2024 at 14:04 o'clock

Member: bastla
bastla Jul 02, 2008 at 09:09:43 (UTC)
Goto Top
Hallo Afk009 und willkommen im Forum!

Die Umsetzung könnte etwa so aussehen:
@echo off & setlocal
set "Quelle=\\ueeb1p001\Projektverfolgung"  
set "mde=Prio.mde"  
set "ini=XXX.ini"  
set "Ziel=H:"  
set "Prog=C:\Programme\Microsoft Office\Office10\MSACCESS.EXE"  

if not exist "%Ziel%\%ini%" goto :Kopieren  
if not exist "%Ziel%\%mde%" goto :Kopieren  

for /f "usebackq tokens=2" %%i in ("%Quelle%\%ini%") do set "QVers=%%i"  
for /f "usebackq tokens=2" %%i in ("%Ziel%\%ini%") do set "ZVers=%%i"  
if not defined ZVers goto :Kopieren
if %ZVers% geq %QVers% goto :Starten

:Kopieren
copy "%Quelle%\%ini%" "%Ziel%\%ini%">nul  
copy "%Quelle%\%mde%" "%Ziel%\%mde%">nul  

:Starten
start "%Prog%" "%Ziel%\%mde%" /runtime  
Noch als Anmerkung zum "start": Da der erste unter Anführungszeichen stehende Parameter als Fenstertitel interpretiert wird, aber andererseits anhand des Dateityps der übergebenen "Prio.mde" erkannt wird, dass Access gestartet werden soll, könnte die Zeile auch so aussehen:
start "" "%Ziel%\%mde%" /runtime  
Mit anderen Worten: Die Angabe des Pfades zur "MSACCESS.EXE" ist überflüssig (schadet aber nicht weiter, und stört auch gar nicht, wenn vielleicht Access XP durch eine neuere Version ersetzt wird).

Grüße
bastla

[Edit] Parameter für "start" angepasst; fehlerhaftes "ser" durch "set" ersetzt [/Edit]
[Edit2] "copy"-Meldungen mit ">nul" unterdrückt [/Edit2]
Mitglied: 60730
60730 Jul 02, 2008 at 09:11:01 (UTC)
Goto Top
Moin,

Rem zum Test immer NICHT @echo off
if not exist H:\Prio.mde>nul  copy \\ueeb1p001\Projektverfolgung\Prio.mde H:\Prio.mde /y
if not exist H:\xxx.ini>nul  copy \\ueeb1p001\Projektverfolgung\H:\xxx.ini H:\xxx.ini /y

fc /b H:\xxx.ini \\ueeb1p001\Projektverfolgung\xxx.ini
if %errorlevel% ==1 goto import
if %errorlevel% ==0 goto end
:import
copy \\ueeb1p001\Projektverfolgung\xxx.ini H:\xxx.ini

:end
start "C:\Programme\Microsoft Office\Office10\MSACCESS.EXE" "H:\Prio.mde" /runtime   
Member: Afk009
Afk009 Jul 02, 2008 at 09:32:22 (UTC)
Goto Top
@bastla.... danke für die Antwort. Bei deiner Version werden nur dann die Daten kopiert wenn sie local nicht vorhanden sind. Sobald die 2 Dateien vorhanden sind, wird die mde nicht gestartet.

@Timo.... dein Version funktioniert einwandfrei, ABER... ich sehe nirgendswo den tatsächlichen vergleich der Verion der ini datei.

also hab local die Vers. der Ini 1.1.2. Wenn ich auf dem Server die Ini öffne und Vers. von 1.1.2 auf 1.1.3 erhöhe und die ini abspeichere und dann die Batch starte passiert nichts. Der Code erkennt , dass nur die ini exestiert und startet normal, vergleicht aber nicht den Inhalt der Inis
Member: bastla
bastla Jul 02, 2008 at 09:37:01 (UTC)
Goto Top
Hallo Afk009!

Ich hatte noch ein wenig mit "start" herumgespielt (siehe Ergänzung oben) - versuch es noch einmal mit der aktuellen Fassung ...

... wobei allerdings auch mit der alten Version schon kopiert worden sein sollte (zumindest, nachdem in Zeile 4 "ser" durch "set" ersetzt wurde face-wink).

Grüße
bastla
Mitglied: 60730
60730 Jul 02, 2008 at 09:41:15 (UTC)
Goto Top
ABER... ich sehe nirgendswo den tatsächlichen vergleich der Verion der ini datei.

Der vergleich ist in Zeile 06 , 07 & 08

Wenn es nur eine Ini ist - kannst du auch fc /l - anstatt fc /b schreiben.
Member: Afk009
Afk009 Jul 02, 2008 at 09:52:00 (UTC)
Goto Top
Genial..... klappt jetzt einwandfrei......
Danke Jungs, Ihr seit spitze.

Gruß,
Iggy