Hallo zusammen,
ich habe ein Batch-Script geschrieben, dass eine Programm updaten soll (nur alte Dateien mit den neuen überschreiben). Das BatchScript verwendet zuerst das Programm pslist, das am Rechner schaut oba das Programm derzeit verwendet wird (läuft das Programm, gibt pslist den Errorlevel 0 zurück, ansonsten 1). Wenn nicht kanns mit dem Update losgehen.
Nun schaut das Script nur noch, ob das Exe-File um Netzlaufwerk neuer ist als am lokalen Rechner. Wenn jo werden die gesamten Daten kopiert.
Nur habe ich das Problem, das der xcopy Befehl im Else teil immer den Errorlevel 1 zurückgibt, auch wenn die exe-Datei korrekt kopiert wurde.
##############################################################
##############################################################
##############################################################
@echo off
:: /////Variablen///////////////
set ProgrammQuelle=\\\\\\Path\\\\Programm
set ProgrammUpdate=false
:://////////////////////////////////////////
IF NOT EXIST "%programfiles%\\\\ProgrammOrdner" goto ende
IF NOT EXIST "%ProgrammQuelle%" goto ende
pslist ProgrammName
if %errorlevel% GEQ 1 set ProgrammUpdate=true
IF %ProgrammUpdate% EQU false (
echo "Programm wird derzeit verwendet !!!"
goto ENDE
) else (
xcopy "%ProgrammQuelle%\\\\Programm.exe" "%programfiles%\\\\ProgrammOrdner\\*.*" /d /y |find "1 "
if %errorlevel% GEQ 1 (
echo "Keine neue Version verfuegbar."
goto ENDE
)
xcopy "%ProgrammQuelle%\\\\*.*" "%programfiles%\\\\ProgrammOrdner\\\\*.*" /R /s /y
)
:ENDE
exit /b
##############################################################
##############################################################
##############################################################
Danke für eure Hilfe
mfg martin
Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge
Wo hast du denn die mehrzeiligen IF ELSE strukturen und die %errorlevel% variante her? Bei cmd.exe kenne ich diese art nicht, eine cmd.exe-alternative?
@echo off
:: /////Variablen///////////////
set ProgrammName=?programm.exe?
set PSListName=?programm?
set ProgrammQuelle=?\ProgrammNeu?
set ProgrammZiel=?\ProgrammInst?
:://////////////////////////////////////////
IF NOT EXIST "%ProgrammQuelle%\%ProgrammName%" goto missing1
IF NOT EXIST "%ProgrammZiel%" goto missing2
pslist %PSListName%
if errorlevel 1 (echo ProgrammUpdate möglich.) else goto inuse
xcopy "%ProgrammQuelle%\%ProgrammName%" "%ProgrammZiel%\*.*" /d /y |find "1 "
if errorlevel 1 goto oldver
xcopy "%ProgrammQuelle%\*.*" "%ProgrammZiel%\*.*" /R /s /y
echo Alles kopiert.
goto ENDE
:oldver
echo Keine neue Version verfuegbar.
goto ENDE
:missing1
echo quelle fehlt
goto ende
:missing2
echo ziel fehlt
goto ende
:inuse
echo Programm wird derzeit verwendet !!!
goto ende
:ENDE
Die vier variablen am anfang müssen natürlich der situation angepasst werden und die ganzen meldungen dürfen auch schöner sein.
mr.escape