hertingo
Goto Top

Desktop-Icon

Hallo zusammen,

eine vermutlich einfache Frage, die mich aber zur Weißglut bringt:

ich habe eine Programmverknüpfung (EXCEL-Basiert) auf dem Desktop liegen mit einem selbst erstellten Icon.

Nun soll eine neue Versoin mit einem neuen Icon auf dem Desktop plaziert werden.
Die Aktualisierung erfolgt über eine Batch-Datei.

Aber nach der aktualisierung erscheint immernoch das alte Symbol für die Verknüpfung.

Hier der Text aus der Batch-Datei:

@echo off & setlocal

::Löschen von dem Ordner KnowledgeMapping, falls dieser existiert
if exist "c:\KnowledgeMapping" rmdir /s /Q "c:\KnowledgeMapping"
if exist "%userprofile%\desktop\KnowledgeMapping.lnk" del "%userprofile%\desktop\KnowledgeMapping.lnk"

::Löschen von dem Ordner Portal, falls dieser existiert
if exist "c:\Portal" rmdir /s /Q "c:\Portal"
if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"


::erstellen von dem Ordner Portal, falls dieser noch nicht existiert
if not exist "c:\Portal" md "c:\Portal"

::kopieren der Dateien von Netzlaufwerk nach C:\Portal\
robocopy "\\ITFS1001\Netzlaufwerk\Portal\Setup" "C:\Portal" /MIR


::Desktop als Zielpfad für Verknüpfung

set "zielpfad=%userprofile%\Desktop"


::Name der Verknüpfung (ohne ".lnk")

set "progtitel=Portal"

::Speicherort der Programmdatei

set "progdir=C:\Portal\"

::Name der auszuführenden Programmdatei

set "progexe=Portal.xlsm"

::Beschreibung des auszuführenden Programms

set "beschreibung=Portal

::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):

if not exist "%zielpfad%" md "%zielpfad%"

::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.IconLocation = "C:\Portal\favicon.ico,0">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs

::... ausführen ...

cscript //nologo %temp%\MakeShortCut.vbs

::... und wieder löschen.

del %temp%\MakeShortCut.vbs

if exist "Portal Setup.zip" del "Portal Setup.zip"
if exist "Portal Setup.bat" del "Portal Setup.bat"


Hat jemand eine Idee? Vielen Dank im Voraus!

VG

herting

Content-Key: 259106

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

Ausgedruckt am: 19.03.2024 um 06:03 Uhr

Mitglied: Ravers
Lösung Ravers 07.01.2015, aktualisiert am 08.01.2015 um 08:08:26 Uhr
Goto Top
Hi,

habs mir nicht genau angeschaut, sehe aber das du den Link per VBS erstellst.

Warum kopierst du es nicht einfach per batch?

greetz
ravers
Mitglied: rubberman
rubberman 07.01.2015 aktualisiert um 20:55:52 Uhr
Goto Top
Hallo hertingo, willkommen im Forum.

if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"
So ein Pfad kann nicht existieren. Ich gehe davon aus, dass das c:\ zu viel ist.
Korrigiere das mal und teste erneut.

Falls das nicht hilft, gib dem System die Chance zu realisieren, dass die Verknüpfung neu ist. Z.B. indem du zwischen Löschen und Neuerstellung ein
>nul timeout /t 2 /nobreak
setzt.

Andere Möglichkeit die du testen könntest wäre, zuerst die neue Verknüpfung mit einem anderen Name zu erstellen, danach die alte löschen und dann die neue umbenennen.

Grüße
rubberman
Mitglied: hertingo
hertingo 07.01.2015 um 21:04:50 Uhr
Goto Top
Hallo Ravers und Rubberman,

erstmal vielen Dank für Eure Antworten. Ich werde die morgen gleich mal testen und dann berichten.

Bis dahin vielen Dank!

VG

hertingo
Mitglied: hertingo
hertingo 08.01.2015 um 08:08:13 Uhr
Goto Top
Hallo Ravers, hallo rubberman,

also folgendes zu den Lösungsmöglichkeiten:

die Befehlszeile
if exist "%userprofile%\desktop\Portal.lnk" del "%userprofile%\desktop\Portal.lnk"
habe ich korrigiert aber leider ohne Effekt.

Auch ein Timeout mit dem Befehl
nul timeout /t 2 /nobreak
hatte leider keinen Effekt.

Dann habe ich eine bestehende Verknüpfung, die mit dem Icon versehen worden war, kopiert. Und siehe da, es hat funktioniert!

Aus diesem Grund habe ich nun die weitere Variante
"zuerst die neue Verknüpfung mit einem anderen Name zu erstellen, danach die alte löschen und dann die neue umbenennen"
nicht ausprobiert.

Euch beiden vielen Dank für Eure Hilfe!

VG

hertingo
Mitglied: mayho33
Lösung mayho33 04.02.2015, aktualisiert am 09.02.2015 um 08:12:25 Uhr
Goto Top
Hi!

ISt zwar schon gelöst, aber wenn du die Verknüpfung für mehrere Profile bereitstellen willst solltest du die direkt in des Public.Desktop-Folder stellen. Der wird von allen Profilen verwendet. Dazu brauchst du zwar Adminrechte, aber du hast kein Problem mit nicht aktualisierten Verknüpfungen in einzelnen Profilen.

Wir mache das z.B. so per VBScript:

zuerst den Public-Desktop-Pfad über die Registry ermitteln (der sichere Weg unter Windows (Xp, Vista, usw.)

Dim objShell : Set objShell = CreateObject("Wscript.Shell")  
AllUsersDesktop   = objshell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Desktop")  

und anschließend die Verknüpfung anlegen (die OS-Architektur muss berücksichtig werden):
Set oLink = objshell.CreateShortCut(AllUsersDesktop & "\meineVerknüpfung.lnk")  
olink.TargetPath = """C:\Program Files (x86)\Microsoft Office\Office15\excel.EXE"""  
olink.WindowStyle = 4
oLink.IconLocation = "C:\Program Files (x86)\Microsoft Office\Office15\excel.EXE,0"  
oLink.WorkingDirectory = """C:\Program Files (x86)\Microsoft Office\Office15"""  
oLink.Save
Set oLink = Nothing

Grüße

Mayho