an-wei
Goto Top

daten kopieren in verschiedene ordner mit gleichen unterordnern

hallo zusammen,

ich moechte ein in anmeldescript etwas verschlanken und dinge rausnehmen, die fuer die anmeldung nicht wirklich notwendig sind.
dazu zaehlt unter anderem das kopieren der ie-favoriten in die userverzeichnisse.

bisher wurde das ganze so geloest
XCOPY "\\domaene\ordner\bookmarks\ie" "\\domaene\%username%\bookmarks\ie" /E /C /I /Q /H /Y  

dieses moechte ich als geplanten task nachts vom server ausfuehren lassen. meine schwierigkeit ist jetzt, das die variable %username% (logischerweise) immer eine andere ist und bisher bei der anmeldung ausgelesen wurde.

wie kann ich es machen das, trotz der unterschiedlichen ordnernamen, die dateien kopieren kann.

vielen dank im voraus
andré

Content-ID: 129187

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

Ausgedruckt am: 25.11.2024 um 00:11 Uhr

TsukiSan
TsukiSan 12.11.2009 um 09:03:47 Uhr
Goto Top
Hallo an-wei,

packe dir alle Usernamen in eine Variable und arbeite dein Script dann in einer For-Schleife ab

Beispiel:
Set AlleMeineUser="User1" , "User2", "User3"  
For %%i in (AlleMeineUser) do Set "TempUser=%%i" &  XCOPY "\\domaene\ordner\bookmarks\ie" "\\domaene\%TempUser%\bookmarks\ie" /E /C /I /Q /H /Y  

Gruss
Tsuki
icsat
icsat 12.11.2009 um 10:18:14 Uhr
Goto Top
Moin,

könnte mir vorstellen, dass auch so etwas funktioniert (ungetestet), wenn grad keine Userliste vorhanden ist:
for /f "skip=4 delims=" %%i in ('net user /domain^|find /v "erfolgreich"') do for %%a in (%%i) do xcopy "\\domaene\ordner\bookmarks\ie" "\\domaene\%%a\bookmarks\ie" /E /C /I /Q /H /Y  
60730
60730 12.11.2009 um 13:19:19 Uhr
Goto Top
Servus,

ich moechte ein in anmeldescript etwas verschlanken
gute Idee
dieses moechte ich als geplanten task nachts vom server ausfuehren lassen.
IMHO falscher Ansatz..

Wie oft ändern sich denn die bookmarks auf \\domaene\ordner\bookmarks\ie ?
Ich würde eine flagdatei setzen, und wenn die nicht identisch mit der vom User ist - das kopieren anstossen - sonst auslassen.

bedeutet:
  • weniger stress - alles - was das "login" betrifft steht im loginsript
  • und der Server wird nachts nicht während der Datensicherung gestört.

@ icsat: die idee ist nicht so "verkehrt" - aber damit erwischt du auch alle scriptjob Admins dienstkonten usw...
Gruß
an-wei
an-wei 12.11.2009 um 14:35:30 Uhr
Goto Top
hallo,
dank fuer eure tips.

mein script sieht bis jetzt so aus. aufbauend auf dem hinweis von TsukiSan

SET iefav=D:\Internet\Bookmarks\IE
SET usr=D:\Userdaten
SET usrin=D:\Userdaten\Test-1
SET usrex=D:\Userdaten\Test-2
SET usrsch=D:\Userdaten\Test-3

CD\
CD %USRIN%
DIR /B /L /N >"%USR%\intern.txt"  

CD\
CD %USREX%
DIR /B /L /N >"%USR%\extern.txt"  

CD\
CD %USRSCH%
DIR /B /L /N >"%USR%\schulung.txt"  


FOR %%i IN ('%USR%\intern.txt') DO SET "TMPUSR=%%i" &  XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
FOR %%i IN ('%USR%\extern.txt') DO SET "TMPUSR=%%i" &  XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
FOR %%i IN ('%USR%\schulung.txt') DO SET "TMPUSR=%%i" &  XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  

ERASE /F /Q "%USR%\*.txt"  

allerdings habe ich dann das problem, das der dateiname der textdatei dann als TMPUSR eingetragen wird und nicht die user die in der textdatei stehen.
vielleicht kann mir da jemand sagen vo mein fehler liegt.


@TsukiSan
leider ist deine variante nicht so wirklich zu realisieren. es sollen unsere internen, externen mitarbeiter und diverse schulungsaccounts bedient werden.
die internen mitarbeiter und die schulungsaccounts bleiben zwar gleich, dafuer aendern sich ziemlich oft die externen accounts

@icsat
bei deiner variante ist es so, das alle domaenenaccounts einbezogen werden. auch die die diese favoriten nicht benoetigen.

@timobeil

Wie oft ändern sich denn die bookmarks auf \\domaene\ordner\bookmarks\ie ?
einmal die woche werden die favoriten aktualisiert.

Ich würde eine flagdatei setzen, und wenn die nicht identisch mit der vom User ist - das kopieren anstossen - sonst auslassen.
ich habe das problem, das bei unseren notebookusers beim kopieren der favoriten das logonscript aufhaengt.
da ich das kopieren als letzten punkt ausfuehren lasse und mit dem vorgaengerscript alles klappt, ist hier irgend wo der haken.
wie gesagt, das problem tritt nur bei notebooks auf, daher vermute ich ein problem bei der syncronisierung der userprofile.

* und der Server wird nachts nicht während der Datensicherung gestört.
das script soll nur einmal die woche ausgefuehrt werden, der zeitpunkt soll dann so gewaehlt werden, das keinerlei gegenseitige behinderungen auftreten.


vielen dank im voraus
andré
60730
60730 12.11.2009 um 16:55:40 Uhr
Goto Top
Servus,

ganz grob drübergesehen - und ungetestet..

20. FOR %%i IN ('%USR%\intern.txt') DO SET "TMPUSR=%%i" & XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y
21. FOR %%i IN ('%USR%\extern.txt') DO SET "TMPUSR=%%i" & XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y
22. FOR %%i IN ('%USR%\schulung.txt') DO SET "TMPUSR=%%i" & XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y
FOR %%i IN ('%USR%\intern.txt') DO (  
	SET "TMPUSR=%%i"  
	XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
)
FOR %%i IN ('%USR%\extern.txt') DO (  
	SET "TMPUSR=%%i"   
	XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
)
FOR %%i IN ('%USR%\schulung.txt') DO (  
	SET "TMPUSR=%%i"   
	XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
)

edit quark...

FOR %%i IN ('%USR%\intern.txt') DO XCOPY "%IEFAV%" "%USRIN%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
FOR %%i IN ('%USR%\extern.txt') DO XCOPY "%IEFAV%" "%USRIN%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
FOR %%i IN ('%USR%\schulung.txt') DO XCOPY "%IEFAV%" "%USRIN%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  


Gruß
icsat
icsat 12.11.2009 um 20:00:03 Uhr
Goto Top
Nabend,

Zitat von @an-wei:
...
...
FOR %%i IN ('%USR%\intern.txt') DO SET "TMPUSR=%%i" &  XCOPY "%IEFAV%" "%USRIN%\%TMPUSR%\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
...

allerdings habe ich dann das problem, das der dateiname der textdatei
dann als TMPUSR eingetragen wird und nicht die user die in der
textdatei stehen.
vielleicht kann mir da jemand sagen vo mein fehler liegt.
...

Dein Fehler besteht aus zwei Fehlern, denke ich:
  1. Durch die Angabe des Dateinamen in Hochkommata wird dieses nicht als Eingabedatei, sondern als Text interpretiert, daher hat "%%i" z.B. den Wert "%USR%\intern.txt"
  2. Das setzen der Variable TMPUSER und das gleichzeitige verwenden der Variablen innerhalb eines FOR funktioniert nur unter Verwendung des Schalters "enableDelayedExpansion" und Verwendung der Variablen in der Form "!TMPUSER!" statt "%TMPUSER%"

In Deinem Beispiel also etwa in der Form:
setlocal enableDelayedExpansion
...
FOR %%i IN (%USR%\intern.txt) DO SET "TMPUSR=%%i" &  XCOPY "%IEFAV%" "%USRIN%\!TMPUSR!\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
...

Ich hätte mich da aber auch für TimoBeil's Variante (nur halt ohne die Hochkommata bei der Eingabedatei) entschieden:
Zitat von @60730:
...
FOR %%i IN ('%USR%\intern.txt') DO XCOPY "%IEFAV%" "%USRIN%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y  
...
...

Gruß icsAT
icsat
icsat 12.11.2009 um 20:20:04 Uhr
Goto Top
Manchmal ist es wirklich hilfreich vor dem Posten das Gehirn anzuschalten!!!!!!!!!!!!!!!!!!!!!!!!!!

Ich glaube es ist von Vorteil, wenn wir in unser aller FOR-Schleifen zusätzlich noch den Parameter "/F" verwenden, damit z.B. "%USR%\intern.txt" tatsächlich als Eingabedatei interpretiert wird.

also:
...
FOR /F %%i IN (%USR%\intern.txt) DO XCOPY "%IEFAV%" "%USRIN%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y   
...

Gruß icsAT
an-wei
an-wei 13.11.2009 um 10:19:06 Uhr
Goto Top
vielen dank euch beiden. es klappt wunderbar.
und wieder habe ich was dazugelernt face-smile

hier das fertige script

@ECHO OFF

SET datum=%date:~-4%%date:~-7,2%%date:~-10,2%
SET iefav=D:\Internet\Bookmarks\IE
SET usr=D:\Userdaten
SET usrin=D:\Userdaten\Test-1
SET usrex=D:\Userdaten\Test-2
SET usrsch=D:\Userdaten\Test-3

DIR %USRIN% /B /L /N >%USR%\%DATUM%_intern.txt
DIR %USREX% /B /L /N >%USR%\%DATUM%_extern.txt
DIR %USRSCH% /B /L /N >%USR%\%DATUM%_schulung.txt
	
FOR /F %%i IN (%USR%\%DATUM%_intern.txt) DO XCOPY "%IEFAV%" "%USRIN%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y >NUL 2>NUL  
FOR /F %%i IN (%USR%\%DATUM%_extern.txt) DO XCOPY "%IEFAV%" "%USREX%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y >NUL 2>NUL  
FOR /F %%i IN (%USR%\%DATUM%_schulung.txt) DO XCOPY "%IEFAV%" "%USRSCH%\%%i\Konfiguration\InternetExplorer\Favoriten" /E /C /I /Q /H /Y >NUL 2>NUL  

DelAge32.exe %USR%\*.txt 40 /quiet 2>NUL

gruesse
andré