2.7k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von balduin Einsteiger_in (29 Punkte)
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

5 Antworten

0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von balduin Einsteiger_in (29 Punkte)
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
0 Punkte
Beantwortet von balduin Einsteiger_in (29 Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von balduin Einsteiger_in (29 Punkte)
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
...