knuefi
Goto Top

Script zum Kopieren einer Datei in mehren unterschiedlichen Ordner über eine Verknüpfung

Hallo zusammen,

ich benötige mal wieder euren fachmännischen Rat. Ich benötige ein Script das mir eine Datei (unterschiedliche Namen, mal PDF mal Word usw.), die einen Ordner gelegt wird, in anderen mehren unterschiedliche Ordner mit den gleichen Unterordner (Name: Mitteilungen) kopiert oder verschiebt. Die Empfänger Ordner sind nur über die jeweiligen Verknüpfungen erreichbar. Ideal wäre, dass die Datei die in den 1 Ordner gelegt wird, nach dem Kopieren gelöscht wird. Zum besseren Verständnis hier ein Beispiel:
Auf C: habe ich ein Ordner mit den Namen: Mitteilungen (C\Mitteilungen), zudem befindet sich auf C: noch ein Ordner mit den Namen: Empfänger (c:\Empfänger). In den Ordner Empfänger befinden sich die Verknüpfungen (ink) mit Unterschiedlichen Namen, jede Verknüpfung hat aber einen gleichen Unterordner mit den Namen "Mitteilungen". Nun soll die Datei, die auf das Skript (was sich in Ordner C: Mitteilung befindet) abgelegt wird, über den Ordner C:Empfäger und dort befindliche Verknüpfungen in den Zielordner Mitteilungen kopiert werden. Super wäre, das die Ursprungsdatei anschließend aus den Ordner C:Mitteilung gelöscht wird.
Ich hoffe ich habe es deutlich genug erklärt.

Content-ID: 292639

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

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

emeriks
emeriks 09.01.2016 um 17:53:57 Uhr
Goto Top
Hi,
Ich hoffe ich habe es deutlich genug erklärt.
Definitiv nicht! Einer von uns beiden ist entweder noch nicht oder nicht mehr wach. Oder beides.

E.
Knuefi
Knuefi 09.01.2016 aktualisiert um 18:15:01 Uhr
Goto Top
Es gibt einen Ordner (C:Empfäger) dort befinden sich ca. 100 Verknüpfungen (.ink), zwei Beispiel Verknüpfungen: Name: Max mit Zieladresse: test.com/max/Mitteilungen und Name: Claus: mit Zieladresse:test.com/Claus/Mitteilungen.
Zudem gibt es einen weiteren Ordner (C:Mitteilungen) mit den benötigten Script.
Nun wird z.B. eine PDF in den Ordner C:Mitteilungen gelegt, diese PDF soll über die in den Ordner C:Empfänger befindliche Verknüpfungen und dessen Unterordner Mitteilungen hinein kopiert werden.
Beispiel:
Hallo.pdf wird in C:Mitteilung gelegt, anschließend hat Max und Claus in Ihren Ordner Mitteilungen die Datei Hallo.pdf. Zum Schluß wäre es schön, das die Hallo.pdf in Ordner C:Mitteilung gelöscht wird.
122990
Lösung 122990 09.01.2016 aktualisiert um 19:30:34 Uhr
Goto Top
VBS
Const FOLDER_MITTEILUNGEN = "C:\Mitteilungen"  
Const FOLDER_LINKS = "C:\Empfänger"  

Set fso = CreateObject("Scripting.Filesystemobject")  
Set objShell = CreateObject("Wscript.Shell")  

For Each link In fso.GetFolder(FOLDER_LINKS).Files
	If LCase(fso.GetExtensionName(link.Name)) = "lnk" Then  
		Set lnk = objShell.CreateShortcut(link.Path)
		fso.CopyFile FOLDER_MITTEILUNGEN & "\*.*", lnk.TargetPath & "\Mitteilungen\"  
	End If
Next
fso.DeleteFile FOLDER_MITTEILUNGEN & "\*.*",True  
MsgBox "Fertig"  
Gruß grexit

-edit- Korrekturen.
Knuefi
Knuefi 09.01.2016 aktualisiert um 18:42:43 Uhr
Goto Top
Hallo grexi,
Danke für die super schnelle Antwort, hast es sogar noch schnell auf mein Kommentar das Script angepasst. Es funktioniert Perfekt, leider wird da Script selbst kopiert und auch gelöscht. Hast du dafür eine Lösung?, ansonsten nehme ich den Lösch Befehl raus.
Gruß
Knuefi
122990
122990 09.01.2016 aktualisiert um 18:50:00 Uhr
Goto Top
leider wird da Script selbst kopiert und auch gelöscht. Hast du dafür eine Lösung?, ansonsten nehme ich den Lösch Befehl raus.
Script nicht in den Ordner Mitteilungen legen X). "Koppschüttel*
emeriks
emeriks 09.01.2016 aktualisiert um 18:51:19 Uhr
Goto Top
Zudem gibt es einen weiteren Ordner (C:Mitteilungen) mit den benötigten Script.
Hat er aber so geschrieben! face-wink

Nee, bei diesem Deutsch auch kein Wunder ...

E.
Knuefi
Knuefi 09.01.2016 aktualisiert um 19:32:35 Uhr
Goto Top
@ grexi:
SUPER, hast mir mal wieder weitergeholfen.
VIELEN DANK!!!!!!
Knuefi
Knuefi 10.01.2016 um 19:04:36 Uhr
Goto Top
Hallo noch mal,
heute habe ich das angepasste Script auf einen Server abgelegt, leider gibt es diese Fehlermeldung: Code 800A004C - Path not found.
Hier mein Vorgehen:
Hier liegt das Script: Y:\D-RBKR\Test\Mitteilungen an alle
Zusätzlich liegt hier der Ordner Mitteilungen wo die zu versendete Datei rein gelegt wird: Y:\D-RBKR\Test\Mitteilungen an alle\Mitteilungen.
Hier ist der Ordner mit den Verknüpfungen: Y:\D-RBKR\Test\Mitteilungen an alle \nach Ort\Düsseldorf
Hier eine Zieladresse der Verknüpfungen (.Ink) (Name der Verknüpfung: Mustermann, Lars) : \\test.com\RR\Home\LarsMustermann\Mitteilungen
Hier das Script:
MsgBox "Start mit Verteilung"
Const FOLDER_MITTEILUNGEN = "Y:\D-RBKR\Test\Mitteilungen an alle\Mitteilungen"
Const FOLDER_LINKS = "Y:\D-RBKR\Test\Mitteilungen an alle \nach Ort\Düsseldorf"

Set fso = CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")

For Each link In fso.GetFolder(FOLDER_LINKS).Files
If LCase(fso.GetExtensionName(link.Name)) = "lnk" Then
Set lnk = objShell.CreateShortcut(link.Path)
fso.CopyFile FOLDER_MITTEILUNGEN & "\*.*", lnk.TargetPath & "\Mitteilungen\"
End If
Next
fso.DeleteFile FOLDER_MITTEILUNGEN & "\*.*",True
MsgBox "Fertig mit Verteilung

Was mache ich falsch?
122990
122990 10.01.2016 aktualisiert um 19:51:04 Uhr
Goto Top
\\test.com\RR\Home\LarsMustermann\Mitteilungen
Ist doch klar wenn dein Link schon auf einen Unterordner "Mitteilungen" verlinkt, kann das Script ja keinen weiteren Unterordner Mitteilungen finden face-smile
Dann musst du den String natürlich in dieser Zeile rausnehmen (aber den abschließenden Slash darfst du nicht entfernen)
fso.CopyFile FOLDER_MITTEILUNGEN & "\*.*", lnk.TargetPath & "\Mitteilungen\"  
also dann in ändern in
fso.CopyFile FOLDER_MITTEILUNGEN & "\*.*", lnk.TargetPath & "\"  

Immer diese Copy & Paster ....
Knuefi
Knuefi 10.01.2016 um 19:58:03 Uhr
Goto Top
Na klar, bin ich dumm face-smile. Ich werde es gleich abändern.

Nun noch eine Frage:
bei den ein oder anderen Mitarbeiter wird sich der Laufwerksbuchstabe statt ein Y: ein Z: sein, je nachdem wie er seine Netzwerkverbindung zum Gruppenlaufwerk damals benannt wurde, erst ab \D-RBKR sind alle gleich. Ist das Kritisch, wird das Script trotzdem laufen, oder muss ich ein weiteres Script mit Z: ablegen?
122990
122990 10.01.2016 aktualisiert um 20:02:18 Uhr
Goto Top
So lange dieses Laufwerk lokal unter dem Useraccount unter dem es ausgeführt wird erreichbar ist, nicht.
Ansonsten musst du weitere Dinge sowie mögliche Fehler abfangen, Pfade umschreiben oder Fehler mit On Error Resume Next überspringen.
Für mehr Support -> PM (kostenpflichtig)
Knuefi
Knuefi 10.01.2016 aktualisiert um 21:17:16 Uhr
Goto Top
Danke noch mal, daran lag es natürlich. Das hätte ich selbst sehen müssen face-sad, zumal ich jedes mit eure Hilfe erstelltes Script genau lese und versuche es zu verstehen.
Gruß und ein schönen Rest Sonntag noch