Batch: Dateien auf Namen vergleichen/ ohneTool
Hallo
habe zu meiner Frage in artverwandten Beiträgen nur Verweise auf Tools gefunden,
ich brauche aber eine batch die ich bei jedem meiner Datenbankanwender auf den Rechner packen kann. Diese soll in dem Netz Ordner "Quelle" nach der Datei "Datenbank_1.0.ade" gucken
und das mit dem Lokalen Ordner "Ziel" abgleichen. Ist dort die Datei Datenbank_1.0.ade vorhanden soll er die starten, wenn nicht und die Datei zum Beispiel "Datenbank_0.9.ade" heißt soll die 1.0 vom Netz dort in das Zielverzeichnis kopiert und dann ausgeführt werden.
Also so das der User immer die aktuellste Version der Datei startet.
Ich weiß das ich das auch über das Änderungsdatum machen könnte, nur würde ich das gerne so lösen. Ich habe von Shell programmieren keine Ahnung, deswegen die Frage ob das so gehen würde??
kann ich die Dateien mit der Konvention überhaupt vergleichen, oder sollte man sie lieber Datenbank_001 nennen, zum Beispiel?
Für Hilfe währe ich sehr dankbar.
habe zu meiner Frage in artverwandten Beiträgen nur Verweise auf Tools gefunden,
ich brauche aber eine batch die ich bei jedem meiner Datenbankanwender auf den Rechner packen kann. Diese soll in dem Netz Ordner "Quelle" nach der Datei "Datenbank_1.0.ade" gucken
und das mit dem Lokalen Ordner "Ziel" abgleichen. Ist dort die Datei Datenbank_1.0.ade vorhanden soll er die starten, wenn nicht und die Datei zum Beispiel "Datenbank_0.9.ade" heißt soll die 1.0 vom Netz dort in das Zielverzeichnis kopiert und dann ausgeführt werden.
Also so das der User immer die aktuellste Version der Datei startet.
Ich weiß das ich das auch über das Änderungsdatum machen könnte, nur würde ich das gerne so lösen. Ich habe von Shell programmieren keine Ahnung, deswegen die Frage ob das so gehen würde??
kann ich die Dateien mit der Konvention überhaupt vergleichen, oder sollte man sie lieber Datenbank_001 nennen, zum Beispiel?
Für Hilfe währe ich sehr dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50198
Url: https://administrator.de/forum/batch-dateien-auf-namen-vergleichen-ohnetool-50198.html
Ausgedruckt am: 20.05.2025 um 21:05 Uhr
5 Kommentare
Neuester Kommentar
Ich versuch mich mal, weiß aber nicht ob ich dich richtig verstanden hab, bzw. ob's so elegant ist...
If exist <Pfad>\Datenbank_1.0.ade (call <Pfad>\<Prog>) ELSE GOTO :NICHTDA
exit
:NICHT DA
xcopy <Quelle> <Ziel>
call <Pfad>\<Prog>
so hätte ich jetzt versucht das ganze zu Lösen... Aber hier gibts normalerweise Spzialisten, also wart lieber noch ein wenig... ;)
If exist <Pfad>\Datenbank_1.0.ade (call <Pfad>\<Prog>) ELSE GOTO :NICHTDA
exit
:NICHT DA
xcopy <Quelle> <Ziel>
call <Pfad>\<Prog>
so hätte ich jetzt versucht das ganze zu Lösen... Aber hier gibts normalerweise Spzialisten, also wart lieber noch ein wenig... ;)
...indem Du irgendwo auf dem (oder einem) Server an einem definierten Ort eine Datei hinterlegst, die den "richtigen" Datenbank-Versionsnamen hat.
Beispiel: Wenn alle Clients auf den ServerABC zugreifen können/dürfen, legst Du dort in einem Verzeichnis ein Unterverzeichnis "CurrentVersion" oder "AktuelleDB" an.
Und dort existiert dann eine einzige Datei, die "Datenbank_0.902d.ade" heißt, 0 byte groß ist und nur von Dir allein geändert werden kann (alle Clients haben nur Leserechte).
Gruß
Biber
Beispiel: Wenn alle Clients auf den ServerABC zugreifen können/dürfen, legst Du dort in einem Verzeichnis ein Unterverzeichnis "CurrentVersion" oder "AktuelleDB" an.
Und dort existiert dann eine einzige Datei, die "Datenbank_0.902d.ade" heißt, 0 byte groß ist und nur von Dir allein geändert werden kann (alle Clients haben nur Leserechte).
Gruß
Biber
Ich versuch noch mal einen Ansatz, cavalera,
spiel es am besten am CMD-Prompt nach.
Wenn Du eine von mehreren Dateien mit z.b. gleicher Dateiendung aus einem Verzeichnis "wählen" willst und das Kriterium soll sein :"die Neueste" oder "die Älteste", geht es am einfachsten mit Hilfe des Dir-Befehls.
[Am CMD-Prompt:]
...das würde Dir die "Neueste" *.ade-Datei aus D:\Ordner zeigen.
Diese in eine Variable speichern ginge so:
...und dann kannst Du mit "if exist \\devwaghad43004\Fehlerrueckmeldung-Zp\Quelle\%AktuelleADE%" prüfen, ob eine gleichnamige auf dem Server ist.
Oder, falls der Server den Ton angibt 8was ich für wahrscheinlicher halte):
Im Batch jeweils zwei %-Zeichen vor den Zählvariablen, also %%i statt %i.
HTH
Biber
spiel es am besten am CMD-Prompt nach.
Wenn Du eine von mehreren Dateien mit z.b. gleicher Dateiendung aus einem Verzeichnis "wählen" willst und das Kriterium soll sein :"die Neueste" oder "die Älteste", geht es am einfachsten mit Hilfe des Dir-Befehls.
[Am CMD-Prompt:]
for /f %i in ('dir /b /o:d D:\Ordner\*.ade') do @echo %i
...das würde Dir die "Neueste" *.ade-Datei aus D:\Ordner zeigen.
Diese in eine Variable speichern ginge so:
for /f %i in ('dir /b /o:d D:\Ordner\*.ade') do @set AktuelleADE=%i
...und dann kannst Du mit "if exist \\devwaghad43004\Fehlerrueckmeldung-Zp\Quelle\%AktuelleADE%" prüfen, ob eine gleichnamige auf dem Server ist.
Oder, falls der Server den Ton angibt 8was ich für wahrscheinlicher halte):
for /f %i in ('dir /b /o:d \\devwaghad43004\Fehlerrueckmeldung-Zp\Quelle\*.ade') do @set AufmServerADE=%i
if not exist D:\ordner\%AufmServerAde% [installiere-Serverversion-auf-Client]
if not exist D:\ordner\%AufmServerAde% [installiere-Serverversion-auf-Client]
Im Batch jeweils zwei %-Zeichen vor den Zählvariablen, also %%i statt %i.
HTH
Biber