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.