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-Key: 206321

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

Printed on: April 26, 2024 at 16:04 o'clock

Member: Endoro
Endoro May 11, 2013 updated at 17:20:07 (UTC)
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!
Member: Klaus20
Klaus20 May 12, 2013 at 07:24:50 (UTC)
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 *
Member: Endoro
Endoro May 12, 2013 updated at 08:14:03 (UTC)
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!
Member: Klaus20
Klaus20 May 12, 2013 updated at 09:03:03 (UTC)
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%
Member: Endoro
Endoro May 12, 2013 at 09:41:41 (UTC)
Goto Top
Hallo Klaus20,

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

Gruss!
Member: Klaus20
Klaus20 May 12, 2013 updated at 10:59:41 (UTC)
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
Member: Endoro
Endoro May 14, 2013 at 20:04:53 (UTC)
Goto Top
Hallo, stell doch für die anderen Sachen eine neue Frage, hier findet das niemand mehr.

Gruss!
Member: Klaus20
Klaus20 May 15, 2013 at 11:20:40 (UTC)
Goto Top
Vielen Dank Endoro - Habe Deinen Ratschlag befolgt und auch gleich eine Antwort bekommen
Wput Exit Status

Gruß Klaus
Member: Klaus20
Klaus20 May 29, 2013 at 07:36:20 (UTC)
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%
Member: Biber
Biber May 29, 2013 at 09:53:59 (UTC)
Goto Top
Moin Klaus20,

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

Grüße
Biber
Member: Klaus20
Klaus20 May 29, 2013 at 11:55:18 (UTC)
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
Member: Biber
Biber May 29, 2013 updated at 15:06:42 (UTC)
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
Member: Klaus20
Klaus20 May 29, 2013 at 16:10:33 (UTC)
Goto Top
So nun klappt alles wunderbar.
Nochmals vielen Dank.

Gruß

Klaus