52188
Sep 10, 2007, updated at 10:07:53 (UTC)
6593
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))
Please also mark the comments that contributed to the solution of the article
Content-Key: 68258
Url: https://administrator.de/contentid/68258
Printed on: May 4, 2024 at 07:05 o'clock
1 Comment