Desktopverknüfung autom. erstellen - Erweiterung

Von: , Frage gestellt am Fr, 4. Jul 2008

Hallo!

Ich nutze seit einigen Monaten ein kleines Script um autom. eine Verknüpfung auf dem Desktop anzulegen. Das klappt auch alles super - meistens. Davor steht ein Kopierprozess (über einen Dos-Befehl) der leider in 1 von 18 Starts die Daten nicht korrekt über das Netzwerk kopiert. Ich glaube aber, dass an diesem Befehl nichts falsch ist: CODE
net use E: \\server\order /USER:User passw /Persistent:No
xcopy "E:\" "D:\Daten_Aktuell\" /Y /V
Nun tritt aber das Problem auf, dass in diesem einen Fall bei dem das Kopieren nicht einwandfrei funktioniert die Mitarbeiter unbemerkt mit einem alten Datensatz arbeiten.

Um Ihnen aber deutlich zu machen, dass Sie noch den alten oder schon den neuen Datensatz als Verknüpfung auf Ihrem Desktop haben wollte ich einfach jedesmal bei einer Änderung auch das Desktopsymbol ändern. Das klappt aber nicht so wie ich möchte: ' AB HIER WIRD DIE VERKNÜPFUNG AUF DEM DESKTOP ERSTELLT
Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
Set link = Shell.CreateShortcut(DesktopPath & "\DATEN.lnk")
link.Arguments = sVariable
link.Description = "Aktuell"
link.HotKey = "CTRL+ALT+S"
link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 22"
link.TargetPath = "D:\Daten_Aktuell\db.exe"
link.WindowStyle = 3
link.WorkingDirectory = "D:\Daten_Aktuell\"
link.Save
Soweit so gut. Das klappt auch alles einwandfrei. Nun wollte ich aber folgende Zeile hinzufügen und eine zweite anpassen: iconvar = "22"
ALT link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 22"
NEU link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, iconvar"
Leider zerschießt mir diese Änderung mein Desktopicon.
Was mache ich falsch?

Gruß
Lars

8 Antworten zu dieser Frage

  1. Antwort von nach 8 Minuten 0 hilfreich
    Re: Desktopverknüfung autom. erstellen - Erweiteru

    Hallo, iconvar = "22"
    ALT link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 22"
    NEU link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, iconvar"
    Leider zerschießt mir diese Änderung mein Desktopicon.
    Was mache ich falsch?
    ohne den code völlig zu verstehen, da ist ein Syntaxfehler.
    Du meinst:

    NEU link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, " & iconvar

    Gruß Rainer

    • Antwort von nach einer Stunde 0 hilfreich
      Danke :)

      Ah, danke!
      Das & hatte ich doch glatt vergessen - Da sieht man manchmal den Wald vor lauter Bäumen nicht :)

      Vielen Danke nochmal!

      Gruß
      Lars [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 3 Stunden 0 hilfreich
        Re: Danke :)

        Hallo Lars,

        OK, nachdem das geklärt ist ... warum doktorst Du an den Symptomen herum?

        Du kannst die Dateien doch mit VB kopieren und hast Kontrolle darüber, ob die Dateien kopiert wurden.

        Gruß Rainer

  2. Antwort von nach 2 Stunden 0 hilfreich
    Re: Desktopverknüfung autom. erstellen - Erweiteru

    Ich nutze seit einigen Monaten ein kleines Script um autom.
    eine Verknüpfung auf dem Desktop anzulegen. Das klappt auch
    alles super - meistens. Davor steht ein Kopierprozess (über
    einen Dos-Befehl) der leider in 1 von 18 Starts die Daten
    nicht korrekt über das Netzwerk kopiert. Ich glaube aber, dass
    an diesem Befehl nichts falsch ist: CODE
    net use E: \\server\order /USER:User passw /Persistent:No
    xcopy "E:\" "D:\Daten_Aktuell\" /Y /V
    Hi Lars,

    sieht man in der x.txt etwas besonderes wenn das Kopieren schiefging bei:

    xcopy "E:\" "D:\Daten_Aktuell\" /Y /V >> x.txt

    Help net brachte nix und net /? nahezu nix, deshalb kann ich zum Net-befehl nix sagen.

    Und weiß auch nicht ob das was bringt:

    net use E: \\server\order /USER:User passw /Persistent:No >> x.txt
    xcopy "E:\" "D:\Daten_Aktuell\" /Y /V >> x.txt

    Sind vielleicht gelegentlich paar Dateien geöffnet wenn sie kopiert werden sollen?

    Wieso benutzt du eine Batch und benutzt nicht shell oder shellexecute in VB?

    Bringt dies was in der batch :

    fc E:\*.* D:\Daten_Aktuell\*.* >> x.txt

    Gruß
    Reinhard





    Nun tritt aber das Problem auf, dass in diesem einen Fall bei
    dem das Kopieren nicht einwandfrei funktioniert die
    Mitarbeiter unbemerkt mit einem alten Datensatz arbeiten.

    Um Ihnen aber deutlich zu machen, dass Sie noch den alten oder
    schon den neuen Datensatz als Verknüpfung auf Ihrem Desktop
    haben wollte ich einfach jedesmal bei einer Änderung auch das
    Desktopsymbol ändern. Das klappt aber nicht so wie ich möchte: ' AB HIER WIRD DIE VERKNÜPFUNG AUF DEM DESKTOP ERSTELLT
    Set Shell = CreateObject("WScript.Shell")
    DesktopPath = Shell.SpecialFolders("Desktop")
    Set link = Shell.CreateShortcut(DesktopPath & "\DATEN.lnk")
    link.Arguments = sVariable
    link.Description = "Aktuell"
    link.HotKey = "CTRL+ALT+S"
    link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 22"
    link.TargetPath = "D:\Daten_Aktuell\db.exe"
    link.WindowStyle = 3
    link.WorkingDirectory = "D:\Daten_Aktuell\"
    link.Save
    Soweit so gut. Das klappt auch alles einwandfrei. Nun wollte
    ich aber folgende Zeile hinzufügen und eine zweite anpassen: iconvar = "22"
    ALT link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 22"
    NEU link.IconLocation = "%SystemRoot%\system32\SHELL32.dll, iconvar"
    Leider zerschießt mir diese Änderung mein Desktopicon.
    Was mache ich falsch?

    Gruß
    Lars

    • Antwort von nach 3 Stunden 0 hilfreich
      Re^2: Desktopverknüfung autom. erstellen - Erweite

      Hallo Reinhard, Wieso benutzt du eine Batch und benutzt nicht shell oder
      shellexecute in VB?
      ? Wenn VB, wozu dann Shell? Filecopy reicht doch.

      Gruß Rainer

    • Antwort von nach 3 Stunden 0 hilfreich
      Re^2: Desktopverknüfung autom. erstellen - Erweite

      Hi Lars,

      sieht man in der x.txt etwas besonderes wenn das Kopieren
      schiefging bei:

      xcopy "E:\" "D:\Daten_Aktuell\" /Y /V >> x.txt
      Leider nichts sinnvolles. Help net brachte nix und net /? nahezu nix, deshalb kann ich
      zum Net-befehl nix sagen.

      Und weiß auch nicht ob das was bringt:

      net use E: \\server\order /USER:User passw /Persistent:No
      >> x.txt
      xcopy "E:\" "D:\Daten_Aktuell\" /Y /V >> x.txt
      Naja. net use benötige ich um den netzwerkpfad zu erstellen. Der "normale Benuzer" hat sonst keine Rechte auf diesen Ordner zu connecten. Sind vielleicht gelegentlich paar Dateien geöffnet wenn sie
      kopiert werden sollen?
      Nie. Wieso benutzt du eine Batch und benutzt nicht shell oder
      shellexecute in VB?
      Weil ich das nicht kann? Ich habe keine Ahnung von VB. Wenn das nicht so schwierig ist bin ich für jede Idee offen :) Bringt dies was in der batch :

      fc E:\*.* D:\Daten_Aktuell\*.* >> x.txt
      Was macht der Befehl?

      Gruß
      Lars

      • Antwort von nach 3 Stunden 0 hilfreich
        Re^3: Desktopverknüfung autom. erstellen - Erweite

        Hallo, Ich habe keine Ahnung von VB. Wenn
        das nicht so schwierig ist bin ich für jede Idee offen :)
        dann hast Du die falsche Frage gestellt. :-)

        Kopiere am Besten mit 'CopyFileEx', dann bekommst Du eine Rückmeldung, ob der Kopiervorgang erfolgreich war und kannst Notfalls wiederholen.

        'in a form (Form1)
        Private Sub Form_Load()
            'KPD-Team 2001
            'URL: http://www.allapi.net/
            'E-Mail: KPDTeam@Allapi.net
            Dim Ret As Long
            'set the graphics mode to persistent
            Me.AutoRedraw = True
            'print some text
            Me.Print "Click the form to abort the filecopy"
            'show the form
            Me.Show
            'start copying
            Ret = CopyFileEx("c:\verybigfile.ext", "c:\copy.ext", AddressOf CopyProgressRoutine, ByVal 0&, bCancel, COPY_FILE_RESTARTABLE)
            'show some text
            Me.Print "Filecopy completed " + IIf(Ret = 0, "(ERROR/ABORTED)", "successfully")
        End Sub
        Private Sub Form_Click()
            'cancel filecopy
            bCancel = 1
        End Sub
        'in a module
        Public Const PROGRESS_CANCEL = 1
        Public Const PROGRESS_CONTINUE = 0
        Public Const PROGRESS_QUIET = 3
        Public Const PROGRESS_STOP = 2
        Public Const COPY_FILE_FAIL_IF_EXISTS = &H1
        Public Const COPY_FILE_RESTARTABLE = &H2
        Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
        Public bCancel As Long
        Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal StreamBytesTransferred As Currency, ByVal dwStreamNumber As Long, ByVal dwCallbackReason As Long, ByVal hSourceFile As Long, ByVal hDestinationFile As Long, ByVal lpData As Long) As Long
            'adjust the caption
            Form1.Caption = CStr(Int((TotalBytesTransferred * 10000) / (TotalFileSize * 10000) * 100)) + "% complete..."
            'allow user input
            DoEvents
            'continue filecopy
            CopyProgressRoutine = PROGRESS_CONTINUE
        End Function
        


        Und Neztlaufwerk verbinden/trennen ...
        http://www.activevb.de/tipps/vb6tipps/tipp0010.html

        Gruß Rainer

        • Antwort von nach 4 Stunden 0 hilfreich
          Re^4: Desktopverknüfung autom. erstellen - Erweite

          Coole Sache :)

          Vielen Dank.
          Das werde ich am WE gleich mal testen.

          Viele Grüße
          Lars

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!