cavalera

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.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

anding
anding 30.01.2007 um 11:03:51 Uhr
Goto Top
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... ;)
cavalera
cavalera 30.01.2007 um 11:13:14 Uhr
Goto Top
Danke das ist echt super so. Reicht vollkommen
nur weiß die batch ja nicht welche die aktuellste version ist die da liegt. also 1.0 oder 9.1 darf ich da ja nicht angeben. Also wie mach ich das dass der auch guckt, ob meintewegen die letzten drei zeichen kleiner sind, dann kopieren wenn nicht dann so lassen und starten?
Biber
Biber 30.01.2007 um 11:27:11 Uhr
Goto Top
...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
cavalera
cavalera 30.01.2007 um 11:38:28 Uhr
Goto Top
Das würde ja mit der ADE Datei selbst gehen die heißt ja dann "soundso_v.001" also wenn die genauso heißt wie die aufm Rechner dann starte wenn nich dann xcopy und starte: super versteh ich, danke ;)
Kann man mir noch ne Hilfe empfehlen, ich weiß ja nicht wie das geht, irgendwie muss ich aber ja die Ordnerinhalte vergleichen ohne nen expliziten Dateiname zu nenen, also datei mit endung ade in Netzwerk = datei mit ADe auf D: = ? JA Dann usw...

hätte das Kenzeptionell jetzt so, bloß die Syntax is ja nicht so, also wie guck ich nach einer Datei derer name in einer variablen steht usw?
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
DateinameLokal = D:\Ordner\*.ade


If exist \\devwaghad43004\Fehlerrueckmeldung-Zp5\Quelle\DateinameLokal
(call D:\Ordner\DateinameLokal)
ELSE GOTO :NICHTDA

exit

:NICHT DA

xcopy \\devwaghad43004\Fehlerrueckmeldung-Zp5\Quelle\*.ade D:\Ordner\*.ade

call D:\Ordner\*.ade
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Biber
Biber 30.01.2007 um 19:24:22 Uhr
Goto Top
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:]
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]

Im Batch jeweils zwei %-Zeichen vor den Zählvariablen, also %%i statt %i.

HTH
Biber