schauan
Goto Top

Dateien im Netz verteilen - unterschiedliche Zielpfade ermitteln

Hallo,

ich muss im Netzwerk 4 Dateien, z.B. Datei1.vbs bis Datei4.vbs, auf etlichen PC verteilen.

Die Dateien liegen lokal unter D:\Zeuss.

Dort liegt auch eine Rechner.txt mit den Rechnernamen, Inhalt z.B.
PC007
PC4711
PC0815
die Namen zeilenweise, keine sonstigen Angaben.

Auf den Fremdrechnern sollen die Dateien in alle Verzeichnisse mit dem Namen Makro. Diese Verzeichnisse gibt es je Rechner öfter, irgendwo als Unterverzeichnisse von D:\Zeuss, z.B.
D:\Zeuss\Orpheus\Makro,
D:\Zeuss\Euridike\Poseidon\Makro usw.

Für feste Verzeichnisse hab ich auch schon was gefunden, aber hier sind die Zielverzeichnisse ja sehr variabel. Auf dem Zielrechner müssen die Verzeichnisse durchsucht werden, damit das klappt ...

Die remoten Rechner kann ich zur not nacheinander manuell mappen, am wichtigsten wäre ein Script / eine Batch, die die 4 Dateien in allen Makro-Verzeichnissen platziert und dabei ggf. vorhandene Dateien gleichen Namens ersetzt.

Danke einstweilen,

Content-Key: 89714

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

Printed on: April 18, 2024 at 09:04 o'clock

Member: tacker
tacker Jun 12, 2008 at 14:07:08 (UTC)
Goto Top
salü schauan

hab dir ma folgendes script zusammengeschrieben, welches dir die rechnerliste durchgeht, die rechner automatisch unter dem laufwerk P:\ mappt und dann deine gewünschte prozedur mit dem kopieren durchgeht!

ich hoffe es funktioniert! und niemand soll sich über die struktur des scripts beschweren;)

dim fso
dim network

set fso = createobject("Scripting.filesystemobject")  
set network = createobject("wscript.network")  
set pcs = fso.opentextfile("Rechner.txt", 1)  

do while not pcs.atendofstream
	pcname = pcs.readline()
	network.mapnetworkdrive "P:", "\\" & pcname & "\d$\Zeuss", false  
	set ordner = fso.getfolder("P:\")  
	    
	for each subfolder in ordner.subfolders
        findsubfolder(subfolder.path)
	next

	network.removenetworkdrive "P:", true, true  
loop

function FindSubFolder(ordner)
set folders = fso.getfolder(ordner).subfolders
    if right(ordner, 5) = "Makro" then  
        kopieren(ordner)
    end if
for each subfolder in folders 
    FindSubFolder(subfolder)
Next
End Function
    
function kopieren(ordner)
   fso.copyfile "D:\Zeuss\Datei1.vbs", ordner & "\"  
   fso.copyfile "D:\Zeuss\Datei2.vbs", ordner & "\"  
   fso.copyfile "D:\Zeuss\Datei3.vbs", ordner & "\"  
   fso.copyfile "D:\Zeuss\Datei4.vbs", ordner & "\"  
end function

edit: voraussetzung ist natürlich, dass du auf dem remotepc mit deinem angemoldenen user adminrechte hast!

edit2: grml das da unten lässt mein script wohl ein bisschen aufge.blasen dastehen ... face-smile

grüsse tacker
Member: bastla
bastla Jun 12, 2008 at 14:17:05 (UTC)
Goto Top
Hallo schauan!

Sollte sich eigentlich mit folgendem (ungetesteten) Oneliner (direkt von der Kommandozeile) lösen lassen:
for /f "delims=" %i in (D:\Zeuss\rechner.txt) do @for /f "delims=" %a in ('dir /s /b /ad "\\%i\D$\Zeuss\Makro"') do @for %f in (Datei1.vbs Datei2.vbs Datei3.vbs Datei4.vbs) do @echo copy /y "D:\Zeuss\%f" "%a\">nul  
Es wird hier davon ausgegangen, dass die Zielrechner alle erreichbar sind. Durch das "@echo" vor dem "copy" wird der Kopiervorgang zunächst nur simuliert - wenn das Ergebnis vernünftig aussieht, kannst Du es (das "echo" face-wink) einfach weglassen.

Da Du keine besondere Freigabe auf den Zielrechnern erwähnt hast, nehme ich an, dass Du Admin-Rechte hast und daher D$ benutzen kannst.

Falls Du die dargestellte Zeile in einem Batch verwenden willst, jeweils %%i, %%a und %%f schreiben.

Grüße
bastla

[Edit] Berücksichtigung von Einzeldateien "Datei1.vbs" bis "Datei4.vbs" ergänzt. [/Edit]
[Edit2] Unnöttiges Anführungszeichen nach "Datei4.vbs" entfernt. [/Edit]
Member: schauan
schauan Jun 12, 2008 at 14:58:09 (UTC)
Goto Top
Hallo tacker,
das sieht erst mal top aus. Probieren kann ich es erst morgen - habe im moment kein Netzwerk um mich rum ;-(
Wegen der anderen Antwort bin ich noch etwas skeptisch, siehe meine entsprechende Antwort unten.
Danke einstweilen, schauan
Member: schauan
schauan Jun 12, 2008 at 15:08:45 (UTC)
Goto Top
Hallo bastla,

danke schön.

Ich kenne zwar die DOS-Befehle im groben, aber mit der "höheren" BATCH-Programmierung bin ich nicht firm. Daher auch mein etwas skeptische Frage, ich komme erst morgen zum testen.

Der Subfolder Makro liegt ja irgendwo in Tiefe X hinter Zeuss. Klappt das da mit
'dir /s /b /ad "\\%i\D$\Zeuss\Makro"'?
Eigentlich müsste ich ja ein Dir auf 'dir /s /b /ad "\\%i\D$\Zeuss\" legen und prüfen, ob das Unterverzeichnis Makro heisst und wenn ja, die Daten dort rein legen.

Grüße, schauan
Member: bastla
bastla Jun 12, 2008 at 15:23:48 (UTC)
Goto Top
Hallo schauan!

Als Demo von der Kommandozeile:
C:\>dir \\XPP14\D$\Zeuss\Makro /s /b /ad
\\XPP14\D$\Zeuss\Orpheus\Makro
\\XPP14\D$\Zeuss\Euridike\Poseidon\Makro
\\XPP14\D$\Zeuss\Hephaistos\Makro
\\XPP14\D$\Zeuss\Athene\Selene\Makro
Grüße
bastla
Member: schauan
schauan Jun 13, 2008 at 06:50:53 (UTC)
Goto Top
Hallo bastla,

nur ein bischen geht, aber nicht wie gewollt. face-sad
Ich habe zuerst das C:\dir ... probiert. Ich bekomme damit allerdings erst mal nix angezeigt, und wenn ich noch den Orpheus dazwischen tue nur die Unterverzeichnisse von ..\Zeuss\Orpheus\Makro angezeigt:
\\XPP14\D$\Zeuss\Orpheus\Makro\MAMA
\\XPP14\D$\Zeuss\Orpheus\Makro\PAPA
So wie Dein Posting sieht's nicht aus.

Beim Kopieren ist es entsprechend. Die Kopieen werden ebenso nicht nach Makro, sondern wenn ich noch Orpheus reinklemme, in die Unterverzeichnisse von Makro gelegt - hier also MAMA und PAPA.

Habe oben das System nicht angegeben - es geht um XP.
Member: schauan
schauan Jun 13, 2008 at 07:46:28 (UTC)
Goto Top
Hallo tacker,
funktioniert anstandslos. Ich bastle mir jetzt noch ein Logfile dazu und vielleicht eine Fehlerbehandlung, falls mal ein Zugriff nicht funktioniert. Danke nochmal, schauan.
Member: tacker
tacker Jun 13, 2008 at 07:47:54 (UTC)
Goto Top
guten morgen!

mein script hast du bereits ausprobiert?

grüsse tacker
Member: schauan
schauan Jun 13, 2008 at 08:10:44 (UTC)
Goto Top
Hallo tacker,
da haben sich unsere Antworten fast überschnitten - vor einer Minute habe ich mich bedankt face-wink mal sehn, ob bastla noch eine Idee hat und seine die Lösung auch noch zum Ziel führt.
Grüße, schauan
Member: schauan
schauan Jun 13, 2008 at 09:49:27 (UTC)
Goto Top
Hallo bastla,

bin gerade auch mit Deiner Lösung weitergekommen. Es hat ein Stern gefehlt - nicht der vom Ötzi face-wink

C:\>dir \\PC007\D$\Zeuss\*Makro /s /b /ad 
Member: bastla
bastla Jun 13, 2008 at 12:11:00 (UTC)
Goto Top
Hallo schauan!

Da es bei mir (ebenfalls XP) auch (wie es ja eigentlich sein sollte) ohne Stern funktioniert (den bräuchtest Du nur, wenn im Verzeichnisnamen vor "Makro" noch andere Zeichen stünden), kann ich das Problem nicht nachvollziehen - aber da Du ohnehin schon tackers funktionierende Lösung (und einen Workaround für die CMD-Variante face-wink) hast, ist das ja eigentlich nicht weiter wichtig.

Grüße
bastla