52188
10.09.2007, aktualisiert um 12:07:53 Uhr
6584
1
0
Batch - Variable soll erhöht werden und bei 10 abbrechen
BackUp-Batch mit eingebauter Abbruchbedinung - Aber wie?
Hallo, hab folgendes Problem. Ich hab ne Batch geschrieben, die ne Datei lokal sichert, dann das Original überschreibt und dann en Service wieder startet. Nun hab ich das ganze mit XCOPY gemacht. Mit dem passenden Parameter kopiert der Befehl ja solange, bis die Datei vollständig ist. Nun kann es ja passieren, dass das ne ganze Nacht lang so geht, also brauch ich ne Abbruch-Bedingung. Habe da an einen Counter gedacht, der nach xcopy überprüft, ob die Datei vollstädnig ist und wenn nicht, 1 hochzählt. Wobei ja xcopy solange kopiert, bis die Datei vollständig ist. Naja, meine Frage ist jetzt wie ich das anstelle mit dem Counter?
Das ist mein kompletter Quellcode
Das ist mein kompletter Quellcode
set /A counter_a=0
set /A counter_b=0
@echo off
@echo [%date% %time%] [FFM] GSX-Monitoring-Synchronizer V1.2
@echo [%date% %time%] [FFM] Created by XXX
echo [%date% %time%] ----------------------------------------------- >> d:\test\sync_log.txt
echo [%date% %time%] [FFM] Start GSX-Monitoring-Synchronizer V1.2 >> d:\test\sync_log.txt
@echo [%date% %time%] .
@echo [%date% %time%] .
@echo [%date% %time%] .
goto make_dir
:make_dir
rem & counter_a=counter_a+1
rem if %%~ counter_a == 10 @echo [%date% %time%] [USA] Attention! Can't create directory! Program will be closed & echo [%date% %time%] [USA] Attention! Can't create directory! Program will be closed >> d:\test\sync_log.txt & goto end_fail
@echo [%date% %time%] [USA] Creating temp_backup
mkdir d:\test_2\temp_backup && echo [%date% %time%] [USA] Create temp_backup >> d:\test\sync_log.txt
:backup_start
if "%counter_b%" == "10" @echo [%date% %time%] [USA] Attention! Can't backup! Program will be closed & echo [%date% %time%] [USA] Attention! Can't backup! Program will be closed >> d:\test\sync_log.txt & goto end_fail
pause
@echo [%date% %time%] [USA] Start backup process...
echo [%date% %time%] [USA] Start backup process... >> d:\test\sync_log.txt
@echo [%date% %time%] [USA] Efforts: %counter_b%
echo [%date% %time%] [USA] Efforts: %counter_b% >> d:\test\sync_log.txt
xcopy /V /Y d:\test_2\test.txt d:\test_2\temp_backup\
@echo [%date% %time%] [USA] Check possible differences...
for %%I in ("d:\test_2\test.txt") do (
for %%J in ("d:\test_2\temp_backup\test.txt") do (
if %%~zI == %%~zJ @echo [%date% %time%] [USA] Backup successfully! & echo [%date% %time%] [USA] Backup successfully!>> d:\test\sync_log.txt & goto copy_start))
for %%I in ("d:\test_2\test.txt") do (
for %%J in ("d:\test_2\temp_backup\test.txt") do (
if not %%~zI == %%~zJ @echo [%date% %time%] [USA] Backup fails! & echo [%date% %time%] [USA] Backup fails! >> d:\test\sync_log.txt & set /A counter_b=%counter_b+1% & goto backup_start))
:copy_start
rem netsvc "dienst" \\Servername /stop && @echo [%date% %time%] [USA] Stop GSX-Monitoring-Service... && echo [%date% %time%] [USA] Stop GSX-Monitoring-Service... >> d:\test\sync_log.txt
@echo [%date% %time%] [FFM to USA] Copying test.txt from FFM to USA
@echo [%date% %time%] [FFM to USA] Start copy process...
echo [%date% %time%] [FFM to USA] Start copy process... >> d:\test\sync_log.txt
xcopy /V /Y d:\test\test.txt d:\test_2
@echo [%date% %time%] [FFM - USA] Check possible differences...
for %%I in ("d:\test\test.txt") do (
for %%J in ("d:\test_2\test.txt") do (
if %%~zI == %%~zJ echo [%date% %time%] [FFM to USA] Replaceing successfully!>> d:\test\sync_log.txt & @echo [%date% %time%] [FFM to USA] Replaceing successfully! & goto end))
for %%I in ("d:\test\test.txt") do (
for %%J in ("d:\test_2\test.txtt") do (
if not %%~zI == %%~zJ echo [%date% %time%] [FFM to USA] Replaceing fails! >> d:\test\sync_log.txt & @echo [%date% %time%] [FFM to USA] Replaceing fails! & goto copy_start))
:end
rem netsvc "dienst" \\Servername /start && @echo [%date% %time%] [USA] Start GSX-Monitoring-Service... && echo [%date% %time%] [USA] Start GSX-Monitoring-Service... >> d:\test\sync_log.txt
@echo [%date% %time%] [FFM to USA] Copy process finished...
echo [%date% %time%] [FFM to USA] Copy process finished... >> d:\test\sync_log.txt
rd /S /Q "d:\test_2\temp_backup\" && echo [%date% %time%] [USA] Delete temp_backup >> d:\test\sync_log.txt
@echo [%date% %time%] [FFM] GSX-Monitoring-Synchronizer V1.2 finished!
echo [%date% %time%] [FFM] GSX-Monitoring-Synchronizer V1.2 finished! >> d:\test\sync_log.txt
For /L %%i in (1,1,10) do ((ping -n 2 localhost>nul) && Echo Window close in %%i of 10 seconds))
:end_fail
For /L %%i in (1,1,10) do ((ping -n 2 localhost>nul) && Echo Failer! Window close in %%i of 10 seconds))
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 68258
Url: https://administrator.de/contentid/68258
Ausgedruckt am: 29.03.2024 um 08:03 Uhr
1 Kommentar