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, 5817 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 ..
Ähnliche Inhalte
Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(11)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Dir tc Befehl unter Windows 10 macht Probleme (14)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server Komplettspiegelung (13)

Frage von pdiddo zum Thema Windows Server ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...