Ich hatte vor 'ner Weile eine Launcher-Batch gebastelt.
Es gab Probleme mit einem Netzwerk.
Die EXE wird eigentlich direkt auf der Freigabe gestartet, aber dort wurde das nun in ein lokales Verzeichnis kopiert und von dort gestartet,
aber die aktuellen Dateien sollen automatisch von der Freigabe kommen
\\NAS\MyPfad\MyProgramm.exe -parameter
C:\MyPfad\MyProgramm.local.cmd \\NAS\MyPfad -parameter
Eventuel aktive Instanz wird beendet.
Das Verzeichnis wird synchronisiert. (XCOPY)
> XCOPY hat im TestSystem aber einen Nachteil, denn Dateien können nur neuer werden
>
, aber nicht mehr älter
<>
, wenn man eine ältere Version zurücksetze, will.
Und die EXE gestartet > Parameter werden durchgereicht, abgesehn vom 1. Parameter.
Als manuellen Link auf dem Desktop
und nochmal in der Aufgabenplanung, wo täglich neu gestartet wird.
Ist eine böse BATCH, mit integrierter EXCLUDE-Datei für's XCOPY. (nur eine Datei, statt Zwei)
Code:
@PROMPT @@$G$S
CD /D "%~dp0"
REM
REM example: "E:\xxxxx\xxxxx.local.cmd" \\MY-NAS\xxxxx\ -irgendwelche -Parameter
@REM example as single-line command without batch: CMD /C "CD /D "E:\xxxxx"&&TASKKILL /F /IM xxxxx.exe&&ECHO Temp\>xcopy_exclude.txt&&ECHO Backup>>xcopy_exclude.txt&&ECHO xxxxxSrv*.ini>>xcopy_exclude.txt&&XCOPY \\MY-NAS\xxxxx\* .\ /D /S /E /H /R /C /G /K /Z /V /Y /EXCLUDE:xcopy_exclude.txt&&DEL xcopy_exclude.txt&&START "" /B xxxxx.exe -irgendwelche -Parameter
@SET ERR=0
@ECHO.
@ECHO #Source: %~1
@ECHO #Local: %~dp0
@IF NOT EXIST "%~1\xxxxx.exe" ( ECHO source-directory does not exist && SET ERR=1 )
@IF NOT EXIST "%~dp0\xxxxx.exe" ( ECHO local-directory is not correct && SET ERR=2 )
@IF NOT %ERR% == 0 GOTO error
TASKKILL /F /IM xxxxx.exe 2>NUL
@TITLE Download FileUpdates from %~1
XCOPY "%~1\*" "%~dp0" /D /S /E /H /R /C /G /K /Z /V /Y /EXCLUDE:%~f0
@IF ERRORLEVEL 2 SET ERR=3
@TITLE Start xxxxx.exe
SHIFT /1
START "" /B xxxxx.exe %*
@IF ERRORLEVEL 9059 SET ERR=4
@IF NOT %ERR% == 0 GOTO error
@TIMEOUT /t 5
EXIT /B
:error
@TIMEOUT /t 300
EXIT %ERR%
*** COPY-ExcludeList ***
xxxxx.xxx
xxxxx.ini
Backup
Temp\
.7z
.zip
Mit MyProgramm.exe und MyProgramm.cmd könnte man die hartcodierten Namen durch %~f0.exe ersetzen. (Namen wurden durch xxxx ersetzt)
Man könnte die Copy-Source aber z.B. auch in der CMD oder z.B. einer INI oder der Registry speichern, dann bräuchte man den Parameter nicht.