Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
26.11.09, 03:35
|
#1
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
VBS S***** zum Ändern von Verknüpfungen
Hiho,
Ich habe mir mit etwas Hilfe ein S***** zusammengebastgelt, das das Ziel einer Verknüpfung ändert. Allerdings würde ich das gerne so haben, dass ich die vbs in einen Ordner mit verknüpfungen ablege, die datei ausführe und das s***** in allen vorhandenen verknüpfungen den Teil "D:\Games" durch "Y:\Games" ersetzt. Ist sowas möglich?
hier mal mein S*****:
Code:
Set sh = CreateObject("WS*****.Shell")
Set shortcut = sh.CreateShortcut("C:\blub\Shortcut.lnk")
shortcut.TargetPath = "C:\blub\spiel.exe"
Shortcut.WorkingDirectory ="C:\blub"
shortcut.Save
Ich weiß, dass dieses S***** nur eine vorgegebene Verknüpfung ändert, und den kompletten Pfad austauscht. Ich weiß nur halt nicht, wie ich im Pfad nach einem bestimmten begriff ("D:\Games") suche und diesen dann durch einen anderen begriff ("Y:\Games") ersetze.
Ich wäre sehr froh, wenn mir jemand dabei helfen könnte. Das würde mir einiges an Arbeit ersparen.
mfG sTarBuZz
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
26.11.09, 20:00
|
#2
|
xor eax, eax
Registriert seit: Sep 2009
Beiträge: 593
Bedankt: 466
|
Code:
Option Explicit
Dim WSHShell, oFSO, oFolder, oFiles, oFile, strOldPath, strNewPath, lnkName, myShortcut
Dim strTarget, strWorkD, strWDRep, strRep, crLnk, strFolder
Set WSHShell = WS*****.CreateObject("WS*****.Shell")
Set oFSO = WS*****.CreateObject("S*****ing.FileSystemObject")
strFolder = "C:\Users\haze\Desktop\spiele"
If oFSO.FolderExists(strFolder) Then
Set oFolder = oFSO.GetFolder(strFolder)
Set oFiles = oFolder.Files
For Each oFile In oFiles
If UCASE(Right(oFile.Path,4)) = ".LNK" then
'Managing old LNK-Files
strOldPath = "C:\"
strNewPath = "E:\"
lnkName = oFile.Name
Set myShortcut = WSHShell.CreateShortcut(oFile.Path)
strTarget = myShortcut.targetpath
strWorkD = myShortcut.WorkingDirectory
strWDRep = Replace(strWorkD, strOldPath, strNewPath)
strRep = Replace(strtarget, strOldPath, strNewpath)
oFSO.DeleteFile lnkName
'Creating new LNK-File
Set crLnk = WSHShell.CreateShortcut(lnkName)
crLnk.TargetPath = strRep
crLnk.WorkingDirectory = strWDRep
crLnk.save
End If
Next
End If
C:\Users\haze\Desktop\spiele - Diesen Pfad musst du noch entsprechend anpassen.
Dies ist der Ordner, indem sich die Verknüpfungen deiner Spiele befinden.
C:\ - dies ist das Laufwerk, aufdem momentan die alten Verknüpfungen zeigen, wie z.B. C:\Games\Quake3
Eventuell musst du das noch ändern.
E:\ - dies ist der neue Pfad, aufdem nun deine Spiele liegen, wie z.B. E:\Games\Quake3
Eventuell musst du auch das noch entsprechend ändern.
Ablauf des S*****s
Das S***** wird in den Ordner schauen, indem deine Spiele-Verknüpfungen liegen - dort wird es sich den Zielpfad und den "Ausführen in:" Pfad holen und in Variablen abspeichern.
Im nächsten Schritt wird es deine Verknüpfungen löschen und mit den abgeänderten Variablen, nun zeigend auf das richtige Laufwerk, die Verknüpfungen wieder erstellen.
Das wars.
Bitte erstelle vor dem Ausführen des S*****s eine Sicherungskopie deiner Verknüpfungen!
Ausserdem muss das S***** in den Ordner, wo deine Spiele-Verknüpfungen liegen, reinkopiert und ausgeführt werden.
Bei Fragen oder Problemen kannst du dich gerne an mich wenden.
Und nun viel Spass damit.
|
|
|
27.11.09, 07:13
|
#3
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
Erstmal danke für die Antwort.
Ich habe allerdings noch eine Frage:
Nehmen wir mal an, mein Verknüpfungspfad ist C:\Verknüpfungen. In diesem Ordner befinden sich dann Unterordner für die Spiele (z.B.: C:\Verknüpfungen\Call Of Duty). Theoretisch müsste ich doch dann in jeden Spiele-Ordner das S***** reinkopieren oder?
Oder gibt es die Möglichkeit, das S***** in allen Unterordnern nach *.lnk Dateien suchen zu lassen?
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
27.11.09, 10:58
|
#4
|
xor eax, eax
Registriert seit: Sep 2009
Beiträge: 593
Bedankt: 466
|
Das ist möglich - ich werde mir das mal anschauen, wenn ich später wieder Zuhause bin.
VG,
haze303
EDIT:
Code:
Option Explicit
Dim WSHShell, oFSO, oFolder, oFiles, oFile, strOldPath, strNewPath, lnkName, myShortcut
Dim strTarget, strWorkD, strWDRep, strRep, crLnk, strFolder, subFolder, subFiles
Set WSHShell = WS*****.CreateObject("WS*****.Shell")
Set oFSO = WS*****.CreateObject("S*****ing.FileSystemObject")
strFolder = "C:\Users\haze\Desktop\spiele"
If oFSO.FolderExists(strFolder) Then
For Each oFolder In oFSO.GetFolder(strFolder).SubFolders
For Each oFile In oFolder.Files
If UCASE(Right(oFile.Path,4)) = ".LNK" then
'Managing old LNK-Files
strOldPath = "C:\"
strNewPath = "E:\"
lnkName = oFolder & "\" & oFile.Name
Set myShortcut = WSHShell.CreateShortcut(oFile.Path)
strTarget = myShortcut.targetpath
strWorkD = myShortcut.WorkingDirectory
strWDRep = Replace(strWorkD, strOldPath, strNewPath)
strRep = Replace(strtarget, strOldPath, strNewpath)
oFSO.DeleteFile lnkName
'Creating new LNK-File
Set crLnk = WSHShell.CreateShortcut(lnkName)
crLnk.TargetPath = strRep
crLnk.WorkingDirectory = strWDRep
crLnk.save
End If
Next
Next
End If
Anbei das abgeänderte S*****. Jetzt sollte das S***** deine Anforderungen erfüllen.
VG,
haze303
|
|
|
27.11.09, 21:38
|
#5
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
wenn ich das s***** jetzt in den ordner kopiere und ausführe passiert leider rein garnichts
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
27.11.09, 21:45
|
#6
|
xor eax, eax
Registriert seit: Sep 2009
Beiträge: 593
Bedankt: 466
|
Hast du die Pfade angepasst?
strFolder = "C:\Users\haze\Desktop\spiele"
strOldPath = "C:\"
strNewPath = "E:\"
Ich habe es bei mir getestet und das S***** änderte mir einwandfrei die Verknüpfungen.
Bzw. wie sieht dein Plan aus - welchen Pfad bzw. Laufwerksbuchstaben möchtest du von wo nach wo ändern?
|
|
|
27.11.09, 21:50
|
#7
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
sry mein fehler... ich hatte einen schreibfehler in strOldPath. Deswegen hat das s***** natürlich nichts zum ersetzen gefunden. Es klappt jetzt einwandfrei 
Danke für die Hilfe.
Ich werd jetzt mal ein Tool coden, bei dem man per Gui die 3 Variablen setzen kann.
Dann hab ich auch noch was dazu beigetragen
EDIT: Die erste Version des Tools is fertig xD
Screenshot:
Bis jetzt kann man 3 Variablen setzen und diese werden dann in der Datei Link.vbs mit dem S***** zusammengeführt.
In der nächsten Version wird dann automatisch die link.vbs in den Zielordner mit den Verknüpfungen kopiert und von allen Ordnern und Verknüpfungen ein Backup erstellt.
Ich denke mal, dass ich morgen die Version 1.0 zum Beta-Test freigeben kann
mfG sTarBuZz
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
27.11.09, 22:05
|
#8
|
xor eax, eax
Registriert seit: Sep 2009
Beiträge: 593
Bedankt: 466
|
Aber gerne doch.
Wenn du den VBS*****-Weg haben möchtest, für die komfortable Eingabe der Variablen, dann sag mir einfach bescheid - ich poste dann das S***** mit den entsprechenden Änderungen.
Derweil warte ich gespannt auf deine Lösung.
|
|
|
28.11.09, 10:20
|
#9
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
soo... ich hab Version 0.8 fertiggestellt und den Link hab ich dir per PN geschickt.
Wenn du zufrieden bist, können wir ja mal gucken, wie es in der Öffentlichkeit so ankommt
Was meinst du eigentlich mit dem VBS*****-Weg? das würd mich auch mal interessieren.
Click.EXE ist zwar gut, aber auch kein kompletter Ersatz für ne Sprache wie C oder VB
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
29.11.09, 16:56
|
#10
|
xor eax, eax
Registriert seit: Sep 2009
Beiträge: 593
Bedankt: 466
|
Anbei die Lösung über den VBS*****-Weg:
Code:
Option Explicit
Dim WSHShell, oFSO, oFolder, oFiles, oFile, strOldPath, strNewPath, lnkName, myShortcut
Dim strTarget, strWorkD, strWDRep, strRep, crLnk, strFolder, subFiles
Set WSHShell = WS*****.CreateObject("WS*****.Shell")
Set oFSO = WS*****.CreateObject("S*****ing.FileSystemObject")
strFolder = InputBox("Bitte den Pfad zu den Verknüpfungen eingeben." & vbCrLf & "z.B. C:\Users\Admin\Desktop\spiele")
strOldPath = InputBox("Bitte den alten Pfad angeben, indem die Spiele vorher installiert waren." & vbCrLf & "z.B. C:\Games")
strNewPath = InputBox("Bitte den neuen Pfad angeben, indem die Spiele jetzt installiert sind." & vbCrLf & "z.B. E:\Games")
If strFolder = "" Then
MsgBox "Keine Eingabe. Beende!", vbOKOnly, "Error"
Ws*****.Quit
End If
If strOldPath = "" Then
MsgBox "Keine Eingabe. Beende!", vbOKOnly, "Error"
Ws*****.Quit
End If
If strNewPath = "" Then
MsgBox "Keine Eingabe. Beende!", vbOKOnly, "Error"
Ws*****.Quit
End If
If oFSO.FolderExists(strFolder) Then
For Each oFolder In oFSO.GetFolder(strFolder).SubFolders
For Each oFile In oFolder.Files
If UCASE(Right(oFile.Path,4)) = ".LNK" then
'Managing old LNK-Files
lnkName = oFolder & "\" & oFile.Name
Set myShortcut = WSHShell.CreateShortcut(oFile.Path)
strTarget = myShortcut.targetpath
strWorkD = myShortcut.WorkingDirectory
strWDRep = Replace(strWorkD, strOldPath, strNewPath)
strRep = Replace(strtarget, strOldPath, strNewpath)
oFSO.DeleteFile lnkName
'Creating new LNK-File
Set crLnk = WSHShell.CreateShortcut(lnkName)
crLnk.TargetPath = strRep
crLnk.WorkingDirectory = strWDRep
crLnk.save
End If
Next
Next
Else
MsgBox "Der Pfad """ & strFolder & """ existiert nicht." & vbcrlf & "Bitte überprüfen Sie die Pfadangabe zu den Verknüpfungen", vbOKOnly, "Error"
End If
VG,
haze303
|
|
|
30.11.09, 16:28
|
#11
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
deine methode is auch nich schlecht, aber ich würd lieber n GUI haben 
ich schreib ma den antivir-support an, ob die da was machen können.
EDIT: ich hab grad rausgefunden, dass Antivir nicht mehr meckert,wenn ich das icon nicht mit in die exe packe. Ansonsten brauch ich nix zu ändern.
|
|
|
11.12.09, 01:50
|
#12
|
Anfänger
Registriert seit: Dec 2009
Beiträge: 14
Bedankt: 26
|
So ein Tool ist immer nützlich. Würde mich freuen, wenn du (sTarBuZz) mir auch nen Link zu dem Tool mit GUI schicken könntest 
Achso noch als Tipp für Windows-User, es gibt auch noch die Möglichkeit sogenannte "[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" zu setzen. Könnte sehr nützlich sein, falls es sich nicht um Verknüpfungen handelt, sondern ein Dateisystem z.B. einem installierten Spiel auf einer externen Platte. Oder man einfach große Datenmengen verlagern möchte und Programme nach wie vor darauf zugreifen können sollen.
|
|
|
11.12.09, 09:58
|
#13
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
@DaTaNeT:
Ich hab dir den Link per PN geschickt.
Das mit den Abzweigungspunkten schu ich mir mal an, aber ich kann für nix garantieren.
mfG sTarBuZz
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
11.12.09, 14:05
|
#14
|
Anfänger
Registriert seit: Dec 2009
Beiträge: 14
Bedankt: 26
|
Thx für den Link 
Das mit dem Abzweigungspunkt sollte auch nur ein Hinweis sein  Wie man das genau macht steht ja im Wiki bzw. auf der dort verweisenden Seite.
Achja und es wäre echt super, wenn du die EXE soweit ändern könntest (oder einfach ne andere Kompression wählen, wenn es wirklich nur daran liegen sollte). Ich bin in diesem Punkt vorsichtig geworden und werde das Tool daher erstmal nicht testen... 
Trotzdem danke!
|
|
|
12.12.09, 22:59
|
#15
|
~Shisha-Chiller~
Registriert seit: Jul 2009
Ort: C:\Windows\System32\explorer.exe
Beiträge: 119
Bedankt: 107
|
dann nimm den vbs-code von haze303 bis ich die exe geändert habe (morgen)
__________________
"Oh, ein sprechender Elch will meine Kreditkartennummer... das find ich ein faires Angebot!"
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
().
|