jan999
Goto Top

Win-Batch - warum wird falscher Pfad übergeben

Moin!

ich habe noch einmal eine Frage - vermutlich etwas blind, oder es liegt am "fehlenden Kaffee" .... (Insider zum anderen Posting)

Es gibt folgendes Skript

echo off
echo Migration nach MapEditDesktop (GIS)
echo Jan Tappenbeck, jan.tappenbeck@ebhl.de
echo.
set source="\\local.ebhl.de\ebl-daten\Abteilung\EBL_SRL\ALLG\MapEdit\MapEditDesktop_Updater.bat.lnk"  
set target="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"  
set target_batch_neu="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEditDesktop_Updater.bat.lnk"  
set target_batch_alt_lnk="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEdit_Updater.bat.lnk"  
set target_batch_alt="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEdit_Updater.bat"  

echo.
echo

echo %target%

if exist %source% goto CopyMEDUpdater
  echo ***********************************************************************
  echo *  SYSTEMMELDUNG * Kein Zugriff auf das Update-Programm               *
  echo ***********************************************************************
  pause
  goto Fehler


:CopyMEDUpdater

echo copy %source% %target%
copy %source% %target%
if %ERRORLEVEL%==0 goto MEDTester
  echo ***********************************************************************
  echo *  SYSTEMMELDUNG * Fehler beim Kopieren einer BATCH-Datei             *
  echo ***********************************************************************
  pause
  goto Fehler


:MEDTester
if exist %target_batch_neu% goto CopyMEDUpdater
  echo ***********************************************************************
  echo *  SYSTEMMELDUNG * Kein Zugriff auf neues MED-Batch                   *
  echo ***********************************************************************
  pause
  goto Fehler


:CopyMEDUpdater
echo Installation der neuen MED-Dateien
start %target_batch_neu%
if %ERRORLEVEL%==0 goto DelOldBatch
  echo ***********************************************************************
  echo *  SYSTEMMELDUNG * Fehler beim MED-Update                             *
  echo ***********************************************************************
  echo.
  pause
  goto Fehler

:Fehler
:Ende
pause

und dabei kommt folgende Ausgabe beim Starten des neuen Skript.

ECHO ist ausgeschaltet (OFF).
"C:\Users\tappenbeckja\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
copy "\\local.ebhl.de\ebl-daten\Abteilung\EBL_SRL\ALLG\MapEdit\MapEditDesktop_Updater.bat.lnk" "C:\Users\tappenbeckja\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
1 Datei(en) kopiert.
Installation der neuen MED-Dateien
C:\Users\tappenbeckja\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEdit_Updater.bat konnte nicht gefunden werden
Drücken Sie eine beliebige Taste . . .


Ich habe oben die Variable target_batch_neu eingesetzt und damit müsste die lnk-Datei aufgerufen werden. Es wird aber in der Ausgabe nur die Bat angezeigt und dann auch zurecht behauptet, dass es diese nicht gibt.

Hat einer von Euch den Durchblick?

Ich stehe im Dunkel.

Gruß Jan

Content-ID: 345307

Url: https://administrator.de/contentid/345307

Ausgedruckt am: 17.11.2024 um 15:11 Uhr

133883
133883 03.08.2017 aktualisiert um 14:15:48 Uhr
Goto Top
set target_batch_neu="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEditDesktop_Updater.bat.lnk"
Entferne das .lnk und starte die Batch mit call.
set target_batch_neu="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEditDesktop_Updater.bat"   
call %target_batch_neu%
bzw. füge einen leeren String ein wenn du start benutzt:
start "" %target_batch_neu%  
Gruß

Kanne Kaffee rüberschieb ...
sugram
sugram 03.08.2017 um 14:12:57 Uhr
Goto Top
Man kann ein *.lnk schon mit dem Start Befehl ausführen.

start "" "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\MapEditDesktop_Updater.bat.lnk"   

Das sollte normal funktionieren.
133883
133883 03.08.2017 aktualisiert um 14:29:23 Uhr
Goto Top
Nur das er den Errorlevel damit so wie oben nicht auswerten kann da die Batch mit "start" in einem anderen Prozess ausgeführt wird und die Batch nicht auf das Ende wartet außer er verwendet /WAIT. Deswegen ist call bei Batches hier meist die bessere Wahl.
jan999
jan999 03.08.2017 um 14:32:02 Uhr
Goto Top
Moin!

ich habe das Beispiel von Sugram angewandt - warum auch immer das andere nicht funktionierte!

Euch einen virtuellen Cafe !

Jan