dani
Goto Top

VBScript - Probleme mit bestimmten Zeichen

Hallo lieber Programmierer,
ich versuche mich seit heute Mittag eine VBScript fertig zustellen, dass eine Verknüpfung im Startmenü erzeugt.

An sich funktioniert das Erstellen ohne Probleme. Jedoch habe ich Probleme mit Anführungszeichen und dem einfach Slash.

Hier mel Code-Schnipsel:
Dim WshShell, oShellLink, WSHNetwork, Last2Letters, LenString

set WSHNetwork = CreateObject("WScript.Network")  
set WshShell = WScript.CreateObject("WScript.Shell")  
set oShellLink = WshShell.CreateShortcut("C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\link.lnk")  

LenString = Len(WSHNetwork.ComputerName)
Last2Letters =  Right(WSHNetwork.ComputerName, LenString - 8)
msgbox(Last2Letters)


oShellLink.TargetPath = "\\server\freigabe$\programm.exe /" & HexToDec(Last2Letters) - 50  
oShellLink.WindowStyle = 1
oShellLink.Hotkey = ""  
oShellLink.IconLocation = "\\server\freigabe$\programm.exe, 0"  
oShellLink.Description = "Zugang zum Server"  
oShellLink.WorkingDirectory = "server\freigabe$"  
oShellLink.Save


Function HexToDec(strHex)
  dim lngResult
  dim intIndex
  dim strDigit
  dim intDigit
  dim intValue

  lngResult = 0
  for intIndex = len(strHex) to 1 step -1
    strDigit = mid(strHex, intIndex, 1)
    intDigit = instr("0123456789ABCDEF", ucase(strDigit))-1  
    if intDigit >= 0 then
      intValue = intDigit * (16 ^ (len(strHex)-intIndex))
      lngResult = lngResult + intValue
    else
      lngResult = 0
      intIndex = 0 ' stop the loop  
    end if
  next

  HexToDec = lngResult
End Function
Wenn ich in die Eigenschaften der erzeugten Verknüpfung sehe, steht dort folgender Pfad:
"\\server\freigabe$\programm.exe \101"  
Das ist natürlich Mist - da Windows den Pfad nicht findet. So sollte er aussehen:
"\\server\freigabe$\programm.exe" /101  
Es ist also ein Problem mit den Sonderzeichen - sag ich mal. Ich habe bereits mit Char(42) u.ä. versucht, das Problem zu umgehen - keine Chance.
Habt ihr mir vllt. noch einen Idee oder Tipp?


Grüße,
Dani

Content-Key: 128252

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

Printed on: April 16, 2024 at 07:04 o'clock

Member: bastla
bastla Oct 29, 2009 at 17:34:52 (UTC)
Goto Top
Hallo Dani!

Da ja "/101" nicht Bestandteil des Pfades sein soll, versuch es mit
oShellLink.TargetPath = "\\server\freigabe$\programm.exe"  
oShellLink.Arguments = "/" & HexToDec(Last2Letters) - 50  
Grüße
bastla

P.S.: Eigentlich fühle ich mich ja als "lieber Programmierer" nicht angesprochen - ich bin lieber "Scripter" ... face-wink
Member: Biber
Biber Oct 29, 2009 at 18:44:49 (UTC)
Goto Top
<OT>
Zitat von @bastla:
P.S.: Eigentlich fühle ich mich ja als "lieber Programmierer" nicht angesprochen - ich bin lieber "Scripter" ... face-wink
Och, ihr könnt ja trotzdem noch dicke Freunde werden... face-wink
</OT>
Member: bastla
bastla Oct 29, 2009 at 18:46:48 (UTC)
Goto Top
@Biber
[OT]

Och, ihr könnt ja trotzdem noch dicke Freunde werden... face-wink
Was "dick" angeht hängt's nur von Dani ab ... face-wink
[/OT]

Grüße
bastla
Member: Biber
Biber Oct 29, 2009 at 18:51:39 (UTC)
Goto Top
@bastla
[OT]
Zitat von @bastla:

Was "dick" angeht hängt's nur von Dani ab ... face-wink

Grüße
bastla

Ich seh da kein Problem - Dani hängt anscheinend nur ab ("ich versuche mich seit heute Mittag eine VBScript fertig zustellen,")

Grüße
Biber
[/OT]
Member: Dani
Dani Oct 29, 2009 at 20:07:54 (UTC)
Goto Top
Moin bastla,
du bist mein Held des Tages...bei mir zu Hause funktioniert es wunderbar. Ich probiere es gleich morgenfrüh nochmal in der Firma.
Dieser * Zeile.... face-confused Ich melde mich morgen nochmal.

@Biber
Nebenher...hatte heute 2 Techniker im Haus. Der Eine meinte, er muss im Gebäude rauchen und der andere hat unsere USV verschrottet. Auf Kinder aufpassen ist einfacher! Unglaublich, ich hätte heute Morgen nicht aufstehen sollen. face-smile


Grüße,
Dani
Mitglied: 76109
76109 Oct 29, 2009 at 20:43:11 (UTC)
Goto Top
Hallo zusammen!

Wenn bekannt ist, ab welcher Stelle der HexText beginnt, dann sollte die Konvertierung auch so gehen:
LenString = Len(WSHNetwork.ComputerName)
Last2Letters =  Right(WSHNetwork.ComputerName, LenString - 8)
If Last2Letters = "" Then Zahl = 0 Else Zahl = CLng("&H" & Last2Letters)  

Gruß Dieter