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-ID: 89714

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

tacker
tacker 12.06.2008 um 16:07:08 Uhr
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
bastla
bastla 12.06.2008 um 16:17:05 Uhr
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]
schauan
schauan 12.06.2008 um 16:58:09 Uhr
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
schauan
schauan 12.06.2008 um 17:08:45 Uhr
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
bastla
bastla 12.06.2008 um 17:23:48 Uhr
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
schauan
schauan 13.06.2008 um 08:50:53 Uhr
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.
schauan
schauan 13.06.2008 um 09:46:28 Uhr
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.
tacker
tacker 13.06.2008 um 09:47:54 Uhr
Goto Top
guten morgen!

mein script hast du bereits ausprobiert?

grüsse tacker
schauan
schauan 13.06.2008 um 10:10:44 Uhr
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
schauan
schauan 13.06.2008 um 11:49:27 Uhr
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 
bastla
bastla 13.06.2008 um 14:11:00 Uhr
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