erzeuge aus einem Batch-VBS-Hybriden eine verknüpfung



  • Moin liebe Gemeinde,
    ich muss mit diesem Script aber nicht nur eine Verknüpfung erzeugen sondern einige mehr.
    Habt ihr vill eine Idee wie ich es umstellen kann ohne den ersten Teil zu verfielfältigen?

    @echo off & setlocal
    :BEGINN
    if exist "C:\Programme\Datei.exe" goto :NÄCHSTER
    set "DATEI=Datei.exe"
    set "PFAD=C:\Programme"
    set "LINK=%USERPROFILE%\Desktop\TEST\%DATEI%.lnk"
    goto :LINKGENERIEREN
    :NÄCHSTER
    
    ...
    
    :LINKGENERIEREN
    echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
    echo Set objShortcut=objShell.CreateShortcut("%LINK%")>>%temp%\MakeShortCut.vbs
    echo objShortcut.TargetPath="%PFAD%\%DATEI%">>%temp%\MakeShortCut.vbs
    echo objShortcut.WorkingDirectory="%PFAD%">>%temp%\MakeShortCut.vbs
    echo objShortcut.Save>>%temp%\MakeShortCut.vbs
    cscript //nologo %temp%\MakeShortCut.vbs
    del %temp%\MakeShortCut.vbs
    goto :BEGINN
    

    Grüß ▲waldgnarf▲ 🙂



  • du könntest eine for schleife verwenden!

    Batch-Reference
    http://de.wikibooks.org/wiki/Batch-Programmierung



  • es klappt nicht so wie ich wollte, ich weiss nicht was ich falsch aber jetzt hat der link kein name mer. und ausserdem wird willkührlich eine datei gewählt und nicht alle datein auch wenn ich weiter oben die datein noch einzeln als variable setze.

    @echo off & setlocal
    set ARBEITSLAUFWERK=C
    for /r %PFAD% %%f in (*.*) do (
    set "DATEI=%%f"
    set "PFAD=%USERPROFILE%\Desktop\TEST"
    set "LINK=%USERPROFILE%\Desktop\TEST\%PFAD%.lnk"
    )
    ...VBS
    


  • Ich steh' zwar echt auf solche Sachen, aber es wäre wohl klarer, das ganze gleich in einer Sprache zu schreiben, aus der man direkt auf Wscript.Shell zugreifen kann.

    Was dein letztes Beispiel angeht: Natürlich wird da nur eine Datei verarbeitet, auch nicht willkürlich, sondern exakt die letzte in der rekursiven Auflistung. Bevor du die Klammer schließt, fehlt da noch ein goto :LINKGENERIEREN; weil du zwar sonst zwar alle Dateien durchläufst, aber nichts damit tust, als ein paar Variablen zu definieren, die beim nächsten Durchlauf überschrieben werden.



  • danke erstmal für eure antworten, aber es klappt auch mit goto schleife nicht.
    auch nicht wenn ich noch eine ans ende setze die dann wieder auf :BEGINN verweist.
    und das ist ja nur ein kleiner teil von meinem script der ist für die neuinstallation von windows und stellt sogar meine meine zusätzlichen toolsbars wieder her. startmenü alle programme und regestrys für die einstellungen von ner externen festplatte. das progg spahrt mir über ein tag arbeit. poste es gern wenn jemand gefallen daran finden könnte, aber ich habe alles in batch geschrieben. und bin schon echt überrascht das ich für alles nur ein proggy brauch also bis auf die modifizierte kill.exe von pcwelt für den explorer refresh. aber die is eh im system ordner.

    Gruß Grüß ▲waldgnarf▲



  • Dann schreib alles, was die vbs-Datei macht und ausführt gleich in die for-Schleife und spar dir die gotos. DOS-Batch ist sehr kindisch, würde mich nicht wundern, wenn man aus Schleifen nicht raus springen kann.



  • wenn ich dach mache geht garnix mer, glaube LINK ist das problem, die daten von DATEI kommen nicht an wenn ich einen beliebigen namen wähle erstellt er einen link. und ich hab keine ahnung wie ich den VBS-script umschreiben soll. kenn mich sogut wie nicht aus.



  • Pack die Sache mit dem Link-Erstellen in ein .vbs-File und leg's in den gleichen Ordner (zwecks Übersichtlichkeit). Dann ruf's aus der Schleife aus (gotos solltest du dann gar nicht brauen).

    Du kannst das Ding ja irgendwo hinposten.



  • ich wollt doch aber alles mit in die batch packen. aber ich glaube es geht nicht anders muss wohl jede datei einzeln ansprechen. wird nur dann leider so viel code der sich wiederholt.


Anmelden zum Antworten