Batch-Befehl zum Kopieren in sämtlichen Userprofilen auf Terminalserver

Alt 27.03.2013, 12:03   # 1
gladiator94
 
Registriert seit: 29.04.2012
Beiträge: 9
Hey Leute,

nach langer Zeit hab ich mal wieder ein kleines Problemchen
Ich muss eine Batch-Datei schreiben, die auf einem Server angewandt werden soll und die in den Anwendungsdateien JEDES Benutzers eine bestimmte Datei ins gleiche Verzeichnis kopieren und umbenennen soll. (Es geht hier um Konfigurationseinstellungen eines Telefonprogramms, von denen eine Sicherheitskopie angelegt werden soll)
Ich hab nur leider keinen Lösungsansatz Mit den Umgebungsvariablen %APPDATA% und Co. komme ich hier irgendwie nicht weiter, da ich damit immer nur in die Anwendungsdaten des momentanen Benutzers des Servers (also des Admins) abrufen kann... Und ich möchte nicht an jedem Client einen Batch Befehl ausführen, sondern viel lieber diesen einmal auf dem Server für alle Benutzer erledigen

Hat jemand irgendwelche Lösungsvorschläge?

MfG Gladiator
  Mit Zitat antworten
Alt 27.03.2013, 12:03 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Alt 27.03.2013, 14:08   # 2
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.288
Grad wenig Zeit:
Zwei Möglichkeiten:
  1. Bei der Nutzeranmeldung ein copy der Datei durchführen. Das ist einfach und die Datei landet direkt bei dem Nutzer. Ein Startscript hat man eh meistens und der copy wäre ein Einzeiler.
  2. hierzu brauchst Du eine for Schleife über alle Nutzernamen um in jedes Verzeichnis diesen copy zu machen. Dazu geht man so vor, daß man den copybefehl auf einem Nutzer testet und dann den Benutzernamen durch eine Varible ersetzt. Die Variable wird durch eine for-Schleife befüllt, die durch eine Liste (in Deinem Fall mit den Nutzernamen) rennt. Batch-Programmierung: Batch-Befehle – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher
  Mit Zitat antworten
Alt 27.03.2013, 14:47   # 3
gladiator94
Threadstarter
 
Registriert seit: 29.04.2012
Beiträge: 9
Danke erstmal für die Antwort

zu 1.)
Das heißt dann, dass der Nutzer bei jeder Anmeldung eine Sicherheitskopie erstellt? Oder hab ich da was falsch verstanden?
zu 2.)
Solch eine ähnliche Variante hab ich mir auch schon überlegt und skizziert. Das Problem hierbei ist nur, dass ich von Batch-Programmierung (oder Programmierung überhaupt) nicht viel Ahnung von der Syntax habe
Ich hatte mir in der Theorie folgendes überlegt:
Den Pfad zu den Usern als allgemeine Variable (%userpfad%) festlegen.
Mithilfe dieser Variable eine weitere Variable "füllen" (%userliste%) -> quasi alle Benutzer in die %userliste% eintragen.
Dann die überflüssigen Nutzer, die von den Sicherungen nicht betroffen sein sollen, aus der %userliste% entfernen. (admin, alluser, ...)
Dann käme die For-Schleife, die nacheinander alle übrig gebliebenen Nutzer durchgeht mit folgendem Befehl:

xcopy \userpfad\userlist(i)\anwendungsdaten\...\datei.xl s datei_%date%.xls

Wobei die Syntax vermutlich komplett falsch ist ich hoffe, du kannst die Zeile interpretieren ... ^^
Und das wärs eigentlich auch schon zu meiner Überlegung. Ginge das so?

Vielen Dank
  Mit Zitat antworten
Alt 27.03.2013, 17:09   # 4
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.288
Grundsätzlich würde ich mich an eine relevante Menge von Accounts in einem produktiv genutzten System nicht ran wagen, wenn ich davon nur wenig Ahnung hätte und mir nur eine relativ anonyme Person im Netz Tipps gibt.

zu 1.:
Das kann man so einstellen, daß die Kopie nur angelegt wird, wenn die Datei noch nicht existiert. zB:
Code:
if not exist "%userprofile%\Desktop\test.txt" copy /Y "vonwoauchimmer\testa.txt" "%userprofile%\Desktop\test.txt"
zu 2.:
Liegen die Nutzerverzeichnisse auf dem Server (also servergespeicherte Profile) oder liegen die auf allen Clients extra?

Im ersten Fall sollte es ganz einfach sein vom Server aus (Achtung ungetestet!) in etwa so:
Code:
FOR /F %%i IN (NUTZERLISTE.txt) DO copy PFADWODIEDATEILIEGT\DATEI PFADWODIENUTZERPROFILELIEGEN\%%i\PFADIMPROFIL\DATEI
Wenn Leerzeichen im Pfad sind, dann brauchst Du Anführungsstriche!

Im zweiten Fall wird das aufwendiger und dazu hab ich jetzt keine Lust - blödes batchgefrickel

Grüße Grunzer
  Mit Zitat antworten
Alt 28.03.2013, 09:19   # 5
gladiator94
Threadstarter
 
Registriert seit: 29.04.2012
Beiträge: 9
Vielen vielen Dank, das ist alles sehr informativ
Und mal ganz nebenbei: Das ist eine Aufgabe von meinem Ausbilder und ich bin im ersten Ausbildungsjahr Wenn das ganze dann mal meinerseits halbwegs korrekt fertig wird, wirds erst noch kontrolliert und erst dann evtl. (aber auch nur evtl.) beim Kunden eingesetzt Denn es stört sie bis jetzt auch nicht, die Kopien noch per Hand anzufertigen; das soll nur eine eventuelle Erleichterung für die Zukunft werden.

zu 1.:
Das wäre schon eine gute Lösung, die ich jetzt soweit verstanden habe danke dafür, aber ich denke die 2. gefällt mir besser ^^

zu 2.
Hier hast du richtig angenommen.. Die Nutzerverzeichnisse liegen allesamt auf dem Server in einer Domäne soweit ich weiß.

FOR /F %%i IN (NUTZERLISTE.txt)
--> heißt das inhaltlich übersetzt soviel wie: Für "Variable"(Nummer i = 1,2,..., bis zum Schluss) in der Nutzerliste?
Der Rest ist mir dann soweit klar denk ich

Danke nochmal

Grüße
  Mit Zitat antworten
Alt 28.03.2013, 12:41   # 6
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.288
Ich denke Du hast es verstanden.

Die For-Schleife geht die Nutzerliste Zeilenweise durch und solange eine weitere Zeile in der Datei ist, wird er diese in die Variable füllen und alles dahinter stehende ausführen.

Ich bin mir nur nicht ganz so sicher, wie zukunftstauglich ein Batchfile ist, da die Möglichkeiten doch recht rudimentär sind. Meist werden solche Aufgaben inzwischen lieber mit vbs oder meist viel einfacher/schneller in der Powershell realisiert.
Man hat dort einfach viel mehr Möglichkeiten für spezielle Anwendungsfälle und vor allem Steuerungsmöglichkeiten...

Grüße Grunzer
  Mit Zitat antworten
Alt 02.04.2013, 08:24   # 7
gladiator94
Threadstarter
 
Registriert seit: 29.04.2012
Beiträge: 9
Hey entschuldige, ich war Ostern nicht da

Alles klar, dann bedank ich mich hier jetzt nochmals Hat mir beim Verstehen sehr geholfen.
Wenn ich mal wieder was habe, würds mich freuen, wenn mir wieder so schnell und nett geholfen wird ;D
Was die Zukunftstauglichkeit angeht.. Es geht ja ganz simpel nur um diesen einen Befehl; da wird nicht mehr "batch-seitig" dazukommen

Bis dann,

der Gladi94
  Mit Zitat antworten
Alt 02.04.2013, 09:05   # 8
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.288
Zitat:
da wird nicht mehr "batch-seitig" dazukommen
Hihihi, ja das denkt man immer und wundert sich dann bei der nächsten Migration auf ein neues System wie ein 10-DinA4-seitiges Batchscript mit der Laufzeit einer Dampflok überhaupt funktionieren konnte

Schöne Grüße
  Mit Zitat antworten
Alt 02.04.2013, 11:32   # 9
gladiator94
Threadstarter
 
Registriert seit: 29.04.2012
Beiträge: 9
Ja mal sehen

falls wider Erwarten doch noch was kommen sollte, weiß ich ja, wer Ahnung davon hat

Schöne Grüße zurück
  Mit Zitat antworten

Alt 01.08.2014, 16:12 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Alt 01.08.2014, 16:12 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 16:12 Uhr.