Batch erstellen um eine *txt Datei zu kopieren und archivieren
Hallo.
Ist hier jemand, der Fit ist im Batch schreiben?
Ausgangslage:
Jeden Tag kommt eine Textfile auf das Laufwerk C:\
Dieses File soll nun in das Laufwerk D:\ kopiert werden, die Datei allerdings auf dem C:\ belassen.
Gleichzeitig soll aus der Datei in D: ein WinZip Archive erstellt werden, das in D:\Backup abgelegt wird.
Die Winzip Datei soll ca. 7 Tage erstellt werden, bis die älteste wieder überschrieben wird.
Das Tesxtfile auf D:\ soll einfach liegengelassen werden, und am nächsten Tag wieder überschrieben werden.
hm.....verständlich?
Gruss
Antwort schreiben
Antwort 1 von malSchauen vom 05.05.2021, 17:17 OptionsLösung
Hi,
Eine Batch dafür könnte aussehen wie folgt:
@ECHO OFF
REM QuellVerzeichnis als "von" definieren
set von="C:\"
REM ZielVerzeichnis als "ziel" definieren
set ziel="D:\"
REM Sicherungsverzeichnis als "sicher" definieren
set sicher="D:\Backup\"
REM Dateinamen als "datei" definieren
set datei="Test.txt"
REM Datei von Quelle nach Ziel kopieren (ggf. überschreiben)
xcopy %von%%datei% %ziel% /O /R /Y /V
REM Zieldatei mit WINRAR als Zip-Archiv in das Sicherungverzeichnis legen
REM (mit Datum und Uhrzeit im Namen)
%programfiles%\WINRAR\rar a -ag_YYYY-MM-DD_HH-MM-SS %sicher%%datei%.zip %ziel%%datei%
REM Dateien im Sicherungsverzeichnis auflisten
REM die jüngsten 7Dateien belassen, alle anderen löschen
REM (!!!Achtung!!! es betrifft alle DATEIEN im SicherungsVerzeichnis)
for /f "skip=7" %%i in ('dir /a-d /o-d /b %sicher%') do del /q %sicher%\%%i
EXIT
EOF
Im obigen Beispiel wird die Konsolenversion von WINRAR zum Packen genutzt. Die Zeile ist selbstredend an das bei Dir verwendete Tool anzupassen.
bye
malSchauen
Antwort 2 von balduin vom 06.05.2021, 14:55 Options
Hi.
Hey, danke dir für den batch.....GENAU sowas wollte ich!!
Leider funktioniert es bei mir mit WinZip nicht, aber habe halt nun WinRar installiert ;-)
Danke dir herzlich!
Gruss
Antwort 3 von balduin vom 08.05.2021, 14:19 Options
Hi
ich weiss, bin etwas doof......aber wie muess ich den batch verändern, damit kein WinRar-Archiv erstellt, sondern einfach nur das Text-File im 7 Tages-Zyklus in den Archiv-Ordner verschoben wird?
@echo off
AnyMSExport.exe -f TKP-TermineExport.sql -d tkp32_exp -u xxxxxxxxx -p xxxxxxxxx -s , -b D:\SOFT-NRG\TOUCHPOINT\TEMP
ren D:\SOFT-NRG\TOUCHPOINT\TEMP\ExportJobsView.txt TKP_TP_0700.txt
if not %errorlevel%==0 goto :error
goto :ok
:error
@echo ERROR - return code:
@echo %errorlevel%
pause
:ok
@ECHO OFF
set von="D:\SOFT-NRG\TOUCHPOINT\TEMP\"
set ziel="D:\SOFT-NRG\TOUCHPOINT\OUTPUT\"
set sicher="D:\SOFT-NRG\TOUCHPOINT\ARCHIV\"
set datei="TKP_TP_0700.txt"
xcopy %von%%datei% %ziel% /O /R /Y /V
%programfiles%\WINRAR\rar a -ag_YYYY-MM-DD_HH-MM-SS %sicher%%datei%.zip %ziel%%datei%
for /f "skip=7" %%i in ('dir /a-d /o-d /b %sicher%') do del /q %sicher%\%%i
del D:\SOFT-NRG\TOUCHPOINT\TEMP\TKP_TP_0700.txt
EXIT
EOF
Gruss
Antwort 4 von malSchauen vom 08.05.2021, 16:20 Options
Hi,
Die Dateien im Sicherungsverzeichnis (Archiv) müssen sich ja nun zwingend im Namen unterscheiden, um nicht immer und immerwieder überschrieben zu werden. Da die Konsolenversion von WINRAR das Einfügen des Datums und der Zeit in den Archivnamen von Haus aus anbietet, fiel die Entscheidung eben dieses als Unterscheidungsmerkmal zu nutzen leicht.
Dies würde ich auch weiter beibehalten wollen. Ändere Deine Batch doch einmal wie folgt:
@echo off
AnyMSExport.exe -f TKP-TermineExport.sql -d tkp32_exp -u xxxxxxxxx -p xxxxxxxxx -s , -b D:\SOFT-NRG\TOUCHPOINT\TEMP
ren D:\SOFT-NRG\TOUCHPOINT\TEMP\ExportJobsView.txt TKP_TP_0700.txt
if not %errorlevel%==0 goto :error
goto :ok
:error
@echo ERROR - return code:
@echo %errorlevel%
pause
:ok
@ECHO OFF
set von="D:\SOFT-NRG\TOUCHPOINT\TEMP\"
set ziel="D:\SOFT-NRG\TOUCHPOINT\OUTPUT\"
set sicher="D:\SOFT-NRG\TOUCHPOINT\ARCHIV\"
set datei="TKP_TP_0700.txt"
xcopy %von%%datei% %ziel% /O /R /Y /V
for /f "tokens=1,2,3,4 delims=/. " %%a in ("%date%") do set datum=%%c-%%b-%%a
for /f "tokens=1,2,3,4 delims=/:, " %%a in ("%time%") do set zeit=%%a-%%b-%%c
ECHO D|xcopy %ziel%%datei% %sicher%%datum%_%Zeit%_%Datei% /O /R /Y /V
for /f "skip=7" %%i in ('dir /a-d /o-d /b %sicher%') do del /q %sicher%\%%i
del D:\SOFT-NRG\TOUCHPOINT\TEMP\TKP_TP_0700.txt
EXIT
EOF
Damit wird dann beim Kopieren ins Archiv das Datum und die Uhrzeit in den Dateinamen eingebracht.
btw: Warum soll das nun direkt als File und nicht als ZIP-Archiv gesichert werden? Hat da etwa IT-Abteilung der Firma etwas gegen WINRAR einzuwenden bzw. möchte dafür keine Lizenz kaufen? ;-)
Bye
malSchauen
Antwort 5 von balduin vom 08.05.2021, 20:15 Options
Hi malschauen
Super...das versuche ich Montags gleich mal aus ;-)
Und ja.....leider darf ich WinRar nicht installieren ;-)
Muss aber sagen, das ich eigentlich nix mit Batch und so zu tun habe, aber dank dir wohl etwas lösen kann, wofür ich gar nicht zuständig und qualifiziert bin :-) , aber trotzdem realisieren muss ;-)
Gruss