Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datum per Batchdatei prüfen und vergleichen

Frage Entwicklung Batch & Shell

Mitglied: EnricoS

EnricoS (Level 1) - Jetzt verbinden

08.08.2008, aktualisiert 11.08.2008, 5776 Aufrufe, 7 Kommentare

Guten Tag

Habe ein problem.
Ich will Dateien prüfen auf ihr datum und die Dateien vergleich.

Habe das schon mal versucht mit der Zeile

c:If (dir C:\quelle\%1 \t:w) > (dir C:\ziel\%1) goto :ZIEL_NEUER else :QUELLE_NEUER

aber so richtig geht das nicht.Wäre nett wenn jemand helfen könnte.
Mitglied: bastla
08.08.2008 um 12:01 Uhr
Hallo EnricoS und willkommen im Forum!

Bevor wir hier anfangen, Kunststücke mit Datumszerlegungen und -vergleichen anzustellen: Was hast Du eigentlich dann weiter vor? Sollte es nur ein Kopieren sein, würde "xcopy /d" schon genügen, wobei sich das auch (für eine einzelne Datei in %1) so einsetzen ließe:
01.
@echo off & setlocal 
02.
xcopy /d /l /y "C:\quelle\%1" "C:\ziel\%1"|findstr /b /c:"0 Datei(en) kopiert">nul && goto :QUELLE_NICHT_NEUER 
03.
echo Quelle ist neuer ... 
04.
goto :eof 
05.
 
06.
:QUELLE_NICHT_NEUER 
07.
echo Quelle ist nicht neuer ...
Grüße
bastla
Bitte warten ..
Mitglied: EnricoS
08.08.2008 um 13:33 Uhr
Also die ganze sache ist dafür gedacht das wenn unser außendienstler kommt und daten geändert hat dann wollen wir nicht jede einzene suchen sondern er soll nur die ersetzen oder überschreiben die geändert wurden und jünger sind als die in der Quell datei.hier mal die idee

@echo off

if exist C:\Ziel\%1 goto FILE_TRUE

if not exist C:\Ziel\%1 goto FILE_FALSE

:FILE_TRUE
C: If dir C:\quelle\zeichnung.txt \t:w > C:\ziel\zeichnung.txt goto :ZIEL_NEUER else :QUELLE_NEUER

:ZIEL_NEUER
echo Die Datei Zeichnung.txt im Zielverzeichniss ist aktueller.
echo 1 Ersetzen?
echo 2 Abbrechen?
echo 3 ins Quellverzeichniss kopieren?
echo.

choice /C:123
if errorlevel 3 goto ZIEL_QUELLE
if errorlevel 2 goto abbrechen
if errorlevel 1 goto QUELLE_ZIEL

:QUELLE_NEUER
echo Die Datei zeichnung.txt im Quellverzeichniss ist aktueller.
echo 1 ins Zielverzeichniss kopieren?
echo 2 Abbrechen?
echo 3 Ersetzen?
echo.

choice /C:123
if errorlevel 3 goto QUELLE_ZIEL
if errorlevel 2 goto abbrechen
if errorlevel 1 goto ZIEL_QUELLE

:QUELLE_ZIEL
xcopy c:\QUELLE\zeichnung.txt c:\ZIEL
goto ende

:Abbrechen
goto ende

:ZIEL_QUELLE
xcopy c:\ZIEL\Zeichnung.txt c:\QUELLE\%1
goto ende



:FILE_FALSE
xcopy C:\quelle\%1 C:\ZIEL\%1
echo.

goto ende

:ende
pause
Bitte warten ..
Mitglied: bastla
11.08.2008 um 07:49 Uhr
Hallo EnricoS!

Vermutlich wäre für Deine Anwendung ein Synchronisierungstool mit grafischer Oberfläche besser geeignet, aber eine Lösung per Batch ist natürlich auch möglich.
Soll tatsächlich für jede einzelne Datei eine Entscheidung abgefragt werden?

Wenn ja, welche Entscheidung wird wahrscheinlich öfter getroffen - das Übernehmen der neueren Datei aus der Quelle (oder auch dem Ziel), oder das Zurückkopieren einer alten Version (vermutlich ersteres )?

Grüße
bastla
Bitte warten ..
Mitglied: EnricoS
11.08.2008 um 07:58 Uhr
Ja soll es jedesmal eigentlich.
ich denke mal schon das neuere in die Quelle .Aber das soll der nutzer dann entscheiden können.Mir fehlt im eigentlichen nur noch das mit dem vergleichen der beiden Ordner .
Wie könnte man das am besten machen und wäresehr froh über vorschläge von euch.

So ist es bis jetzt

@echo off

if exist C:\quelle\%1 goto FILE_TRUE

if not exist C:\quelle\%1 goto FILE_FALSE

:FILE_TRUE
C:\quelle\zeichnung.txt /tw > C:\ziel\zeichnung.txt goto :QUELLE_NEUER else :ZIEL_NEUER

:ZIEL_NEUER
echo Die Datei Zeichnung.txt im Zielverzeichniss ist aktueller.
echo 1 Ersetzen?
echo 2 Abbrechen?
echo 3 ins Quellverzeichniss kopieren?
echo.

choice /C:123
if errorlevel 3 goto ZIEL_QUELLE
if errorlevel 2 goto abbrechen
if errorlevel 1 goto QUELLE_ZIEL

:QUELLE_NEUER
echo Die Datei Zeichnung.txt im Quellverzeichniss ist aktueller.
echo 1 ins Zielverzeichniss kopieren?
echo 2 Abbrechen?
echo 3 Ersetzen?
echo.

choice /C:123
if errorlevel 3 goto QUELLE_ZIEL
if errorlevel 2 goto abbrechen
if errorlevel 1 goto ZIEL_QUELLE

:QUELLE_ZIEL
xcopy c:\QUELLE\zeichnung.txt c:\ZIEL
goto ende

:Abbrechen
goto ende

:ZIEL_QUELLE
xcopy c:\ZIEL\Zeichnung.txt c:\QUELLE\zeichnung.txt
goto ende



:FILE_FALSE
xcopy C:\quelle\zeichnung.txt C:\ZIEL\zeichnung.txt
echo.

goto ende

:ende
pause
Bitte warten ..
Mitglied: bastla
11.08.2008 um 07:59 Uhr
Hallo EnricoS!

Ein einfacher Ansatz (nur neuere oder noch nicht im Ziel vorhandene Dateien zum Kopieren anzubieten) sähe so aus:
01.
xcopy /e /d /f /p /y C:\Quelle C:\Ziel
Das ließe sich dann noch mit umgekehrter Quelle und Ziel wiederholen, sodass auch die im Ziel neueren Dateien angeboten würden.

Grüße
bastla
Bitte warten ..
Mitglied: EnricoS
11.08.2008 um 08:32 Uhr
würde es noch ne andere variante geben?So sollte es nicht sein den er soll fragen ob die datei ersetzt werden soll nicht den vielleicht ist die neue datei eine ausnahme und murde nur für den einen fall geändert und sonst braucht man immer die Quell datei.
Bitte warten ..
Mitglied: bastla
11.08.2008 um 08:42 Uhr
Hallo EnricoS!

Na gut, dann (ungetestet) etwa so:
01.
:Synchronisieren 
02.
::der Datei %1 
03.
set "Q=C:\Quelle\%~1" 
04.
set "Z=C:\Ziel\%~1" 
05.
if not exist "%Q%" goto :Ziel_kopieren 
06.
if not exist "%Z%" goto :Quelle_kopieren 
07.
 
08.
set QuellZeit= 
09.
set ZielZeit= 
10.
for /f "tokens=1-5 delims=.: " %a in ("C:\Quelle\%~t1") do set "QuellZeit=%c%b%a%d%e" 
11.
for /f "tokens=1-5 delims=.: " %a in ("C:\Ziel\%~t1") do set "ZielZeit=%c%b%a%d%e" 
12.
 
13.
if not defined QuellZeit goto :KeineQuellZeit 
14.
if not defined ZielZeit goto :KeineZielZeit 
15.
if %QuellZeit% gtr %ZielZeit% goto :QuelleNeuer 
16.
if %QuellZeit% lss %ZielZeit% goto :ZielNeuer 
17.
REM Beide Dateien haben das selbe Datum, daher keine Frage/Aktion erforderlich 
18.
goto :eof 
19.
 
20.
:KeineQuellZeit 
21.
echo Für %1 konnte keine Zeitangabe ermittelt werden! 
22.
goto :eof 
23.
 
24.
:Keine ZielZeit 
25.
echo Für %1 konnte keine Zeitangabe ermittelt werden! 
26.
goto :eof 
27.
 
28.
:QuelleNeuer 
29.
echo Die Datei %1 im Quellverzeichniss ist aktueller. 
30.
echo 1 ins Zielverzeichniss kopieren? 
31.
echo 2 Abbrechen? 
32.
echo 3 Ersetzen? 
33.
echo\ 
34.
set /p "Auswahl=Bitte 1, 2 so oder 3 eingeben: " 
35.
if "%Auswahl%"=="1" goto :Quelle_kopieren 
36.
if "%Auswahl%"=="3" goto :Ziel_kopieren 
37.
echo Unterschiedliche Versionen bleiben erhalten. 
38.
echo\ 
39.
goto :eof 
40.
 
41.
:ZielNeuer 
42.
echo Die Datei %1 im Zielverzeichniss ist aktueller. 
43.
echo 1 ins Quellverzeichniss kopieren? 
44.
echo 2 Abbrechen? 
45.
echo 3 Ersetzen? 
46.
echo\ 
47.
set /p "Auswahl=Bitte 1, 2 so oder 3 eingeben: " 
48.
if "%Auswahl%"=="1" goto :Ziel_kopieren 
49.
if "%Auswahl%"=="3" goto :Quelle_kopieren 
50.
echo Unterschiedliche Versionen bleiben erhalten. 
51.
echo\ 
52.
goto :eof 
53.
 
54.
:Quelle_kopieren 
55.
copy "%Q%" "%Z%">nul 
56.
goto :eof 
57.
 
58.
:Ziel_kopieren 
59.
copy "%Z%" "%Q%">nul 
60.
goto :eof
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst In Html-Datei per Batchdatei das Datum und die Uhrzeit eintragen (2)

Frage von Hakiegold zum Thema Batch & Shell ...

Visual Studio
gelöst Remotedienst prüfen mit Visual Basic (1)

Frage von flyingmichael zum Thema Visual Studio ...

Windows 10
gelöst Windows 10 - Datum und Zeitfehler bei Update (3)

Frage von swisstom zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...