WINDOWS 7 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Automatisch Sicherungskopien erstellen und dabei ältere überschreiben: Oft steht man vor der Aufgabe, bestimmte, auch verteilte Dateien, mit denen man arbeitet, auf einen USB-Stick oder dergleichen zu übertragen, woanders zu bearbeiten, dann wieder zurück zu übertragen etc. - ohne daß dabei einzelne Dateien vergessen oder vorgenommene Veränderungen durch überschreiben neuerer Dateien mit älteren wieder verloren gehen - und das am besten mit einem einzigen Befehl. Das geht automatisiert im DOS mit XCOPY: Der Befehl XCOPY dient eigentlich dazu, ganze Verzeichnisse zu kopieren, und behandelt deshalb einzelne Dateien, als wären es Verzeichnisse. Andererseits kennt der Befehl COPY, der zum Kopieren einzelner Dateien vorgesehen ist, zwar die Nachfrage ( /- Y ), ob eine bereits vorhandene Datei dabei überschrieben werden soll - er kann aber nicht prüfen, ob die zu überschreibende Datei älter ist als die überschreibende; was ihn für einen automatischen Abgleich ziemlich unbrauchbar macht. Man kann jedoch XCOPY auch zum kopieren einzelner Dateien mißbrauchen, und XCOPY kann im Gegensatz zu COPY das Datum der Dateien in Betracht ziehen. Will man also eine Batch- Datei schreiben, die einen automatischen Dateienabgleich vornimmt, bei dem 1) alle spezifizierten Dateien, so sie existieren, in das jeweilige Zielverzeichnis kopiert werden, 2) fehlende Dateien dabei ignoriert, und 3) ältere Dateien im Zielverzeichnis von jüngeren überschrieben werden, 4) jüngere Dateien im Zielverzeichnis aber nicht, und das ganze ohne Nachfrage, dann kann man folgende Anweisung in die Batch - Datei schreiben: echo d | Xcopy "C:\Quellverzeichnis\irgendwas.zip" "D:\Zielverzeichnis\irgendwas.zip"/K/D/Y/H echo d | Xcopy "C:\Quellverzeichnis2\nochwas.zip" "D:\Zielverzeichnis2\nochwas.zip"/K/D/Y/H ... usw Achtung: Umlaute in den Dateinamen müssen mit einem "?" maskiert werden! Bei Umlaute im Pfad hilft allerdings auch das nicht, da muß umfangreicher abgeholfen werden - echo d | beantwortet die Nachfrage, um was es sich handelt, mit "Datei" - /K beläßt ggf. das "schreibgeschützt"- Attribut - /D prüft, ob die Quelldatei neueren Datums ist ( spezifische Datumsangaben sind auch möglich ) - /Y unterdrückt die Nachfrage, ob eine ( ältere! ) Zieldatei überschrieben werden soll - /H kopiert auch System - und versteckte Dateien ( optional ) - /R überschreibt schreibgeschützte Dateien. ( optional ) Will man zudem noch wissen, ob die entsprechende Datei sich von ihrer Kopie unterscheidet - ob die beiden Dateien identisch sind ob oder nicht - und zwar unabhängig davon, ob sie danach überschreiben wurden, kann man vor diese Zeile jeweils noch zwei weitere einfügen: echo n | comp /L "C:\Quellverzeichnis\irgendwas.zip" "D:\Zielverzeichnis\irgendwas.zip" 2> NUL if errorlevel 1 Echo Die Dateien sind NICHT IDENTISCH!         echo d | Xcopy "C:\Quellverzeichnis\irgendwas.zip" "D:\Zielverzeichnis\irgendwas.zip"/K/D/Y/H - /L wirft Unterschiede bei gleich großen Dateien mit der zugehörigen Zeilennummer aus - '2> NUL' unterdrückt die DOS - Nachfrage: 'Weitere Dateien vergleichen (J/N) ?' - echo n | beantwortet diese Nachfrage mit "Nein" Auf diese Weise wird auch noch eine vernünftige Meldung ausgeworfen, so daß man an den Anfang der Batch - Datei @ Echo Off setzen kann. Die Meldung lautet dann ( bei unterschiedlich großen Dateien ): Vergleichen von C:\Quellverzeichnis\irgendwas.zip und D:\Zielverzeichnis\irgendwas.zip... Dateien sind unterschiedlich groß. Die Dateien sind NICHT IDENTISCH! 0 Datei(en) kopiert - falls die zweite Datei neuer ist, bzw. 1 Datei(en) kopiert - falls sie älter war ( jetzt nicht mehr ) Auf diese Weise braucht man nur eine Batch - Datei für beide Zwecke: Falls die Datei im Zielverzeichnis älter ist, wird sie ohne Nachfrage überschrieben, falls sie neuer, also jüngeren Datums ist, nicht. In beiden Fällen aber wird gemeldet, ob sich die Dateien unterscheiden - oder nicht. Diese Dateien kann man dann manuell vergleichen und ggf. überschreiben ( letzteres ginge natürlich auch automatisch, mit einer entsprechenden Befehlszeile in die andere Richtung ). Man kann auch mit ">> liste .txt" eine Liste aller unterschiedlichen Dateien erstellen lassen. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Version I ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ @ echo off REM Echo. = Zeilenumbruch Echo. Echo. Echo. SICHERUNGSKOPIEN ERSTELLEN Echo. Echo. Ohne Rueckfrage - Das Fenster ggf. mit der Maus(!) schliessen, Echo. um den Prozess zu unterbrechen. Echo. Echo. Weiter? Echo. Echo. REM Untebrechung PAUSE PAUSE Echo. Echo. REM Nie den letzten Ordner-Backslash weglassen! Wechsele in das Verzeichnis der Batch-Datei: If Exist "C:\Batch-Verzeichnis\" (CD "C:\Batch-Verzeichnis\") ELSE ECHO. FEHLER: "C:\Batch-Verzeichnis\" existiert nicht REM Lösche die alte Liste: If Exist "C:\Batch-Verzeichnis\liste.txt" Del "C:\Batch-Verzeichnis\liste.txt" REM Kopiere auf Laufwerk D:/ Echo. Echo. Echo. REM test1.zip echo n | comp /L "C:\Quell-Verzeichnis\test1.zip" "D:\Ziel-Verzeichnis\test1.zip" 2> NUL if errorlevel 1 Echo Die Dateien sind NICHT IDENTISCH! if errorlevel 1 Echo NICHT IDENTISCH: "C:\Quell-Verzeichnis\test1.zip" "D:\Ziel-Verzeichnis\test1.zip" >> "C:\Batch-Verzeichnis\liste.txt" echo d | Xcopy "C:\Quell-Verzeichnis\test1.zip" "D:\Ziel-Verzeichnis\test1.zip" /K /D /Y /H Echo. Echo. Echo. REM test2.zip echo n | comp /L "C:\Quell-Verzeichnis\test2.zip" "D:\Ziel-Verzeichnis\test2.zip" 2> NUL if errorlevel 1 Echo Die Dateien sind NICHT IDENTISCH! if errorlevel 1 Echo NICHT IDENTISCH: "C:\Quell-Verzeichnis\test2.zip" "D:\Ziel-Verzeichnis\test2.zip" >> "C:\Batch-Verzeichnis\liste.txt" echo d | Xcopy "C:\Quell-Verzeichnis\test2.zip" "D:\Ziel-Verzeichnis\test2.zip" /K /D /Y /H Echo. Echo. Echo WEITER? Echo. Echo. REM Die Unterbrechung dient der Begutachtung und der Entscheidung PAUSE PAUSE Echo. Echo. Echo. REM notizen1.txt echo n | comp /L "C:\Quell-Verzeichnis\notizen1.txt" "D:\Ziel-Verzeichnis\notizen1.txt" 2> NUL if errorlevel 1 Echo Die Dateien sind NICHT IDENTISCH! if errorlevel 1 Echo NICHT IDENTISCH: "C:\Quell-Verzeichnis\notizen1.txt" "D:\Ziel-Verzeichnis\notizen1.txt" >> "C:\Batch-Verzeichnis\liste.txt" echo d | Xcopy "C:\Quell-Verzeichnis\notizen1.txt" "D:\Ziel-Verzeichnis\notizen1.txt" /K /D /Y /H Echo. Echo. Echo. REM notizen2.txt echo n | comp /L "C:\Quell-Verzeichnis\notizen2.txt" "D:\Ziel-Verzeichnis\notizen2.txt" 2> NUL if errorlevel 1 Echo Die Dateien sind NICHT IDENTISCH! if errorlevel 1 Echo NICHT IDENTISCH: "C:\Quell-Verzeichnis\notizen2.txt" "D:\Ziel-Verzeichnis\notizen2.txt" >> "C:\Batch-Verzeichnis\liste.txt" echo d | Xcopy "C:\Quell-Verzeichnis\notizen2.txt" "D:\Ziel-Verzeichnis\notizen2.txt" /K /D /Y /H Echo. Echo. Echo WEITER? Echo. Echo. REM Die Unterbrechung dient der Begutachtung und der Entscheidung PAUSE PAUSE Echo. Echo. Echo. Type "C:\Batch-Verzeichnis\liste.txt" Echo. Echo. Echo. Echo. ENDE REM OPTIONAL: Lösche die Liste REM del "C:\Batch-Verzeichnis\liste.txt" Echo. PAUSE ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Version II Mit folgenden Raffinessen: 1. FC "Pfad/Datei" Pfad/Datei >NUL 2>&1 prüft, ob ein Dateipfad Leerzeichen enthält 2. chcp 1252 >NUL erlaubt Umlaute auch im Dateipfad, und unterdrückt die Meldung 3. Mit Set FILENAME=%%~nxA wird der Dateiname aus einem Pfad extrahiert und mit 4. DIR "%QUELLE%" | findstr /I /C:"%FILENAME%" die Dateizeile aus dem Verzeichnis gefischt, 5. so daß nur die angesprochene Datei, diese in DOS aber mit Datum und Größe ausgegeben wird 6. chcp 850 >NUL setzt dabei die Ausgabe zum Vergleichen wieder auf die ursprünglich interne zurück [ Weitere extrahierbare Eigenschaften sind in der CMD- Eingabe Aufforderung oder DOS-Box beispielsweise unter FOR /? oder CALL /? oder zu finden; ansonsten FINDSTR /? ] 7. Die Ausgabemeldung von COMP wird mit 2> NUL unterdrückt 8. Die unnachgiebige Ausgabe N von ECHO N | COMP wird mit "Nachricht:" maskiert 9. Ausgabe- und Fehlermeldung von XCOPY wird mit 2>&1 in eine Variable umgeleitet - 10. Beide werden über eine temporäre Datei wechselweise abgerufen und ausgewertet 11. Ausgabe auf dem Bildschirm und auch in eine Datei 12. Aufteilung in eine Listen - und eine Ausführungsdatei ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Datei I: Listendatei zur Auflistung der Quell- und Ziel- Dateien (beliebig benennbar) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ REM CheckCop Dateiabgleich Version 2b @ echo off REM Version 2 REM ------------------------------------------------------------------------------------------ REM >> Hier die GRUND-EINSTELLUNGEN SETZEN! REM ------------------------------------------------------------------------------------------ REM ACHTUNG! Beim '=' und am Zeilenende keine Leerzeichen zulassen! REM ACHTUNG! Auch im Verzeichnisnamen keine Leerzeichen zulassen! REM ACHTUNG! Notfalls auf 8 Zeichen im DOS-Syntax verkürzen: REM Das Verzeichnis '12345678' lautet dann '12345678'! REM Das Verzeichnis '123456789' lautet dann '123456~1'! REM Das Verzeichnis '123 4567' lautet dann auch '123456~1' - es sei denn, es gib schon so eins, dann ~2! REM Das Verzeichnis 'a b c' lautet dann 'abc~1'! REM Das ARBEITSVERZEICHNIS, in dem sich diese Datei befindet -WICHTIG: REM OHNE den letzten Ordner-Backslash\ ! SET BATCHVERZEICHNIS=C:\Users\Mein_Verzeichnis\TEST REM Das ZIELLAUFWERK, auf dem sich die Sicherungen befinden werden : SET ZIELLAUFWERK=Z:\ REM In der Regel so zu lassen: SET SYSTEMMELDUNG11="0 Datei(en) kopiert" SET SYSTEMMELDUNG22="Zugriff verweigert" SET AUSGABEDATEI=%BATCHVERZEICHNIS%\ausgabe.txt SET MELDUNG=%BATCHVERZEICHNIS%\MELDUNG.txt REM ------------------------------------------------------------------------------------------ REM Ende der Grundeinstellungen REM ------------------------------------------------------------------------------------------ Echo. Echo. SOLL ICH WIRKLICH?! Echo. PAUSE Echo. Echo. VORSICHT MIT DER TASTE! Fenster mit der MAUS!! Schliessen! Echo. Echo. PAUSE Echo. Echo. - BEGINNE MIT DER KOPIERAKTION - Echo. PAUSE REM ------------------------------------------------------------------------------------------ REM Vorbereitung (intern): Echo. Echo. If Exist "%BATCHVERZEICHNIS%\" (CD "%BATCHVERZEICHNIS%\") ELSE (ECHO. FEHLER: "%BATCHVERZEICHNIS%\" existiert nicht. ) If NOT Exist "%BATCHVERZEICHNIS%\" GOTO ENDE If NOT Exist "%BATCHVERZEICHNIS%\MACHCOP.BAT" (ECHO FEHLER: "%BATCHVERZEICHNIS%\MACHCOP.BAT" kann nicht gefunden werden. ) If NOT Exist "%BATCHVERZEICHNIS%\MACHCOP.BAT" GOTO ENDE FC "%BATCHVERZEICHNIS%\MACHCOP.BAT" %BATCHVERZEICHNIS%\MACHCOP.BAT >NUL 2>&1 If Errorlevel 1 (Echo %0%) & (ECHO. Im Arbeitspfad duerfen sich keine Leer- oder Sonderzeichen befinden.) If Errorlevel 1 (ECHO Ggf. 8.3-Format verwenden!) & GOTO ENDE If NOT Exist "%ZIELLAUFWERK%" (ECHO. FEHLER: Laufwerk "%ZIELLAUFWERK% existiert nicht") If NOT Exist "%ZIELLAUFWERK%" GOTO ENDE If Exist %AUSGABEDATEI% Del %AUSGABEDATEI% REM ------------------------------------------------------------------------------------------ REM >> DATEIPFADE AUFLISTEN REM ------------------------------------------------------------------------------------------ REM Copy to Ziel REM >> Im Folgenden jeweils QUELLE, ZIEL und SCHALTER setzen - beliebig oft: REM Mit vollem Pfad, also SET QUELLE=C:\... \Quelldatei, SET ZIEL=Z:\... \Zieldatei REM ACHTUNG: Beim '=' -und am Zeilenende- keine Leerzeichen zulassen! REM -------------- REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\alt.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\neu.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=N CALL MACHCOP.BAT REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\neu.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\alt.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=N CALL MACHCOP.BAT REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\neu.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\alt.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=J CALL MACHCOP.BAT REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\3.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\4.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=N CALL MACHCOP.BAT REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\4.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\3.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=N CALL MACHCOP.BAT REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\4.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\3.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=J CALL MACHCOP.BAT REM -------------- REM Testdateien: chcp 1252 >NUL SET QUELLE=%BATCHVERZEICHNIS%\Tästverßeichnüs\4.txt chcp 1252 >NUL SET ZIEL=%BATCHVERZEICHNIS%\Tästverßeichnüs\3.txt REM Auch schreibgeschützte Zieldateien überschreiben? SCHALTER=J/N SET SCHALTER=N CALL MACHCOP.BAT REM -------------- REM ------------------------------------------------------------------------------------------ REM Ende Datei-Eingabe REM ------------------------------------------------------------------------------------------ Echo. Echo. Echo. Echo /////////////////////////////////////////////////////////////////////////////// Echo. Echo. Echo. REM ------------------------------------------------------------------------------------------ Echo - Um den Prozess zu beenden: Die Ausgabedatei und das DOS- Fenster schliessen - >> %AUSGABEDATEI% Echo. Echo. REM OPTIONAL REM Resultat noch einmal auf dem Bildschirm anzeigen: ECHO ######################### RESULTAT ######################### Echo. Echo. Type %AUSGABEDATEI% ECHO ######################### RESULTAT ENDE ######################### REM ECHO Um den Prozess zu beenden: Ausgabedatei und DOS- Fenster schliessen REM Resultat öffnen %AUSGABEDATEI% REM ------------------------------------------------------------------------------------------ REM ------------------------------------------------------------------------------------------ REM Nacharbeiten (intern): :ENDE Echo. Echo. Echo. ENDE If Exist %MELDUNG% Del %MELDUNG% If Exist temp.txt Del temp.txt REM OPTIONAL REM del %AUSGABEDATEI% Echo. PAUSE exit cls ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Datei II: Ausführungsdatei MACHCOP.BAT ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ @ Echo off REM MACHCOP.BAT REM Nicht verändern set ELEV=CCC REM Vergleiche Dateien Echo. >> %AUSGABEDATEI% chcp 1252 >NUL Echo n | Comp /L "%QUELLE%" "%ZIEL%" 2> NUL REM Echo N| Comp /L "%QUELLE%" "%ZIEL%" >> %AUSGABEDATEI% 2> NUL Echo Nachricht: | Comp /L "%QUELLE%" "%ZIEL%" >> %AUSGABEDATEI% 2> NUL REM FEHLERMELDUNG: if errorlevel 1 set ELEV=AAA if errorlevel 2 set ELEV=Dateien konnten nicht geöffnet werden if errorlevel 1 Echo - - - ! NICHT IDENTISCH ! - - - if errorlevel 1 Echo ^>^> Die Dateien sind NICHT IDENTISCH! ------------------ >> %AUSGABEDATEI% if errorlevel 2 Echo ^>^> %ELEV% >> %AUSGABEDATEI% REM DATEI EIGENSCHAFTEN: chcp 1252 >NUL ECHO. >> %AUSGABEDATEI% Echo %QUELLE% >> %AUSGABEDATEI% chcp 850 >NUL REM FOR /F "delims=^" %%A in ("%QUELLE%") DO Set FILENAME=%%~nxA FOR %%A in ("%QUELLE%") DO Set FILENAME=%%~nxA ECHO. chcp 850 >NUL DIR "%QUELLE%" | findstr /I /C:"%FILENAME%" >> %AUSGABEDATEI% ECHO. chcp 1252 >NUL ECHO. >> %AUSGABEDATEI% Echo %ZIEL% >> %AUSGABEDATEI% chcp 850 >NUL REM FOR /F "delims=^" %%A in ("%ZIEL%") DO Set FILENAME=%%~nxA FOR %%A in ("%ZIEL%") DO Set FILENAME=%%~nxA ECHO. chcp 850 >NUL DIR "%ZIEL%" | findstr /I /C:"%FILENAME%" >> %AUSGABEDATEI% chcp 1252 >NUL ECHO. >> %AUSGABEDATEI% REM OPTIONEN: IF %SCHALTER%==J GOTO MITR :OHNER REM Ohne /R - Überschreibt keine schreibgeschützten Dateien: Echo Schreibgeschuetzte Zieldateien werden -nicht- ueberschrieben chcp 1252 >NUL Echo d | Xcopy "%QUELLE%" "%ZIEL%" /K /D /Y /H > %MELDUNG% 2>&1 GOTO MELDE :MITR REM MIT /R - Überschreibt auch schreibgeschützte Dateien: Echo Schreibgeschuetzte Zieldateien werden mit ueberschrieben! chcp 1252 >NUL Echo d | Xcopy "%QUELLE%" "%ZIEL%" /K /D /Y /H /R > %MELDUNG% 2>&1 GOTO MELDE :MELDE if errorlevel 4 Echo ^>^> ACHTUNG Kopierfehler! Datei konnte nicht gelesen oder geschrieben werden >> %AUSGABEDATEI% SORT < %MELDUNG% > temp.txt set /p MELDETEXT1= temp.txt set /p MELDETEXT2=^> Die Zieldatei ist NEUER! >> %AUSGABEDATEI%)) REM set ELEV=CCC Echo. >> %AUSGABEDATEI% Echo. Echo %MELDETEXT1% IF NOT "%MELDETEXT2%"=="%MELDETEXT1%" Echo %MELDETEXT2% Echo %MELDETEXT1% >> %AUSGABEDATEI% IF NOT "%MELDETEXT2%"=="%MELDETEXT1%" Echo %MELDETEXT2% >> %AUSGABEDATEI% IF "%MELDETEXT2%"==%SYSTEMMELDUNG22% Echo Die Zieldatei ist möglicherweise schreibgeschützt >> %AUSGABEDATEI% Echo. >> %AUSGABEDATEI% if "%ELEV%"=="Dateien konnten nicht geöffnet werden" (if EXIST "%QUELLE%" (if EXIST "%ZIEL%" (Echo - Die Quelldatei wurde neu ins Zielverzeichnis kopiert - >> %AUSGABEDATEI%))) if "%ELEV%"=="Dateien konnten nicht geöffnet werden" (if EXIST "%QUELLE%" (if EXIST "%ZIEL%" (Echo 1 Datei^(en^) kopiert >> %AUSGABEDATEI%))) Echo. >> %AUSGABEDATEI% Echo ------------- >> %AUSGABEDATEI% Echo. >> %AUSGABEDATEI% Echo. >> %AUSGABEDATEI% Echo. Echo ---------- Echo. REM Sicherung, da sonst bei Fehlern Quelle / Ziel übertragen werden: SET QUELLE="" SET ZIEL="" REM ----------