klaus20
Goto Top

Zwei Dateien vergleichen

Hallo Zusammen,
habe für die Profis eine wahrscheinlich einfache Frage die ich nur zun Teil lösen konnte.

wie ich schon im Titel sagte möchte ich gerne zwei Dateien vergleichen
und die jüngere Datei kopieren.

Hier mein Ansatz:
for %%f in ("datei1.zip") do echo %%~tf
for %%f in ("datei2.zip") do echo %%~tf

Vielen Dank im vorraus für Eure Hilfe.

Gruß Klaus

Content-ID: 206321

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

Endoro
Endoro 11.05.2013 aktualisiert um 19:20:07 Uhr
Goto Top
Hallo Klaus20,

versuchs mal so:

for /f "delims=" %%i in ('dir /b /od /a-d datei?.zip') do set "file=%%~i"  
copy "%file%" c:\target  

Gruss!
Klaus20
Klaus20 12.05.2013 um 09:24:50 Uhr
Goto Top
@Endoro
Erst mal vielen Dank für die Antwort.
Klappt im Prinzip auch - im CMD Fenster wird mir mit echo %file% auch die richtige Datei angezeigt nur es werden nach wie vor beide kopiert.
Wahrscheinlich habe ich irgendwo noch einen Denkfehler.

Gruß Klaus

Sorry weiß nicht wie ich es richtig formatiere.
* Anfang Wput *
SET name0=datei1.zip
SET name1=datei2.zip
SET nameftp= ftp://+++:*@mein server.de
for /f "delims=" %%i in ('dir /b /od /a-d date*.zip') do set "file=%%~i"
if %file% == "%name1%" ( goto :monat ) else ( goto :tag )

:tag
wput %name1% %nameftp%/Sicherungen/Tag/%name1%

:monat
wput %name0% %nameftp%/Sicherungen/Monat/%name0%
* Ende WPUT *
Endoro
Endoro 12.05.2013 aktualisiert um 10:14:03 Uhr
Goto Top
Zitat von @Klaus20:
Klappt im Prinzip auch - im CMD Fenster wird mir mit echo %file% auch die richtige Datei angezeigt nur es werden nach wie vor
beide kopiert.
.. das wundert mich wenig.
@echo off&setlocal
SET "name0=datei1.zip"  
SET "name1=datei2.zip"  
SET "nameftp=ftp://+++:*@mein server.de"  
for /f "delims=" %%i in ('dir /b /od /a-d date*.zip') do set "file=%%~i"  
if "%file%"=="%name1%" goto:monat  
wput "%name1%" "%nameftp%/Sicherungen/Tag/%name1%"  
GOTO:EOF

:monat
wput "%name0%" "%nameftp%/Sicherungen/Monat/%name0%"  
GOTO:EOF
Wenn der Name "name1" ist soll zu ":monat" verzweigt und dort "name0" kopiert werden?


Gruss!
Klaus20
Klaus20 12.05.2013 aktualisiert um 11:03:03 Uhr
Goto Top
Du hattest recht da war ein Fehler.
So nun habe ich es nochmals geändert, neu geordnet und nun geht es.
Nochmals vielen Dank

Gruß Klaus

P.S.: Hat jemand eine Idee wie ich überprufen kann ob die FTP Verbindung bzw. der Upload geht

*** Falls es nochmal jemand braucht
SET name0=datei_monat.zip
SET name1=datei_tag.zip
SET "nameftp=ftp://+++:*@mein server.de"
for /f "delims=" %%i in ('dir /b /od /a-d date*.zip') do set "file=%%~i"
if %file% == "%name0%" ( goto :monat ) else ( goto :tag )

:monat
wput %name0% %nameftp%/Sicherungen/Monat/%name0%

:tag
wput %name1% %nameftp%/Sicherungen/Tag/%name1%
Endoro
Endoro 12.05.2013 um 11:41:41 Uhr
Goto Top
Hallo Klaus20,

ich hatte "GOTO:EOF" absichtlich ergänzt. Jetzt wird (ein mal im Monat ?) wieder beides kopiert.

Gruss!
Klaus20
Klaus20 12.05.2013 aktualisiert um 12:59:41 Uhr
Goto Top
@Endoro
Hatte ich völlig übersehen - Danke.

@alle

Wie kann ich den exit status abfragen und weiterverarbeiten ??
::Normalerweise ist die Exit-Status 0, wenn entweder alles geklappt oder gab es nichts zu tun.
::Wenn einige Dateien beim Upload übersprungen wurden (aufgrund timestamping oder Fortsetzen-Regeln)
::der Exit-Status wird auf 1 gesetzt.
::Wenn einige Dateien konnten aufgrund eines Fehlers Remote übertragen werden, ist exit status 2.
::Wenn einige Dateien nicht und einige andere wurden übersprungen, ist exit status 3.
::Für allgemeine Probleme wie Ausfall einiger System-Funktionen der Exit-Status ist 4.

Gruß Klaus
Endoro
Endoro 14.05.2013 um 22:04:53 Uhr
Goto Top
Hallo, stell doch für die anderen Sachen eine neue Frage, hier findet das niemand mehr.

Gruss!
Klaus20
Klaus20 15.05.2013 um 13:20:40 Uhr
Goto Top
Vielen Dank Endoro - Habe Deinen Ratschlag befolgt und auch gleich eine Antwort bekommen
Wput Exit Status

Gruß Klaus
Klaus20
Klaus20 29.05.2013 um 09:36:20 Uhr
Goto Top
Habe irgendwo noch einen Fehler in der Batch Datei es wird mir immer die falsche Datei kopiert.
Vielleicht kann mir jemand sagen wo ich meinen Fehler habe ??

Gruß Klaus

:: Neuere Datei die in das Verzeichnis C:\Test\Test1 kopiert werden soll (29.05.2013)
SET name0=datei_monat.zip
:: Ältere Datei mit der nichts geschehen soll (28.05.2013)
SET name1=datei_tag.zip

for /f "delims=" %%i in ('dir /b /od /a-d datei*.zip') do set "file=%%~i"

if %file% == "%name0%" ( goto :monat ) else ( goto :tag )

:monat
copy "%file%" c:\Test\Test1\%file%

:tag
copy "%file%" c:\Test\Test2\%file%
Biber
Biber 29.05.2013 um 11:53:59 Uhr
Goto Top
Moin Klaus20,

a) benutze Code-Formatierung
b) STREICHE if %file% == "%name0%"
SETZE if "%file%" == "%name0%"

Grüße
Biber
Klaus20
Klaus20 29.05.2013 um 13:55:18 Uhr
Goto Top
Hallo Biber,
erst mal Danke für die Antwort.

zu a.) Bin momentan zu blöd für die Code Formatierung - kannst Du mir sagen wie ich sie hinbekomme

zu b.) Nun wird zwar die richtige Datei kopiert,
jedoch wird :monat und :tag ausgeführt, d.h. "%file%" wird nach Test1 und nach Test2 kopiert.

Hast Du noch eine Idee waran das noch liegen könnte ??

Viele Grüße

Klaus
Biber
Biber 29.05.2013 aktualisiert um 17:06:42 Uhr
Goto Top
Moin Klaus20,

zu a) Codeformatierung mit < code > einleiten und mit < /code > beenden OHNE die Leerzeichen, die ich hier verwende.
zu b) sorry, hatte ich vorhin vergessen: Nach Beendigung des Steps :monat fehlt noch eine Zeile "goto :eof"
Sonst werden nämlich einfach alle darunter folgenden Befehle mit ausgeführt.

Grüße
Biber
Klaus20
Klaus20 29.05.2013 um 18:10:33 Uhr
Goto Top
So nun klappt alles wunderbar.
Nochmals vielen Dank.

Gruß

Klaus