Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batchdatei für automatischen Backup der Eigenen Dateien mit verschiedenen Profilen

Frage Entwicklung Batch & Shell

Mitglied: Milzbrand

Milzbrand (Level 1) - Jetzt verbinden

10.12.2010 um 10:43 Uhr, 4357 Aufrufe, 8 Kommentare

Hallo erstmal,
Ich versuche gerade einen Multiboot USB, mit automatisierten Backup, Neuinstallation und Wiederherstellung des Backups per BAT zu programmieren.
Das Problem ist das es immer unterschiedliche Rechner mit unterschiedlichen Profilen sind.

Ich schreibe gerade an einer BAT in der ich an Kundenrechner, die neu zu Formatieren sind, die eigene Dateien zu sichern, eine Neuinstallation durchführen, Standartprogramme installiert und die Gesicherten Dateien wieder herstellt.
das Betriebssystem ist immer XP.
Alles haut soweit hin nur wenn mehrere Benutzer installiert sind, da komme ich nicht weiter.
Wenn nur ein Benutzer auf dem Rechner installiert ist ist das mit %userprofile% kein Problem.

Wie kann ich eine Abfrage starten die mir zb die eigenen Dateien von verschieden, immerwieder unterschiedlichen Benutzern ausliest.

zb: Die Ordnerstrucktur liest sich folgenderweise:

C:\Dokumente und Einstellungen\All Users
C:\Dokumente und Einstellungen\Toxilap
C:\Dokumente und Einstellungen\Admin
C:\Dokumente und Einstellungen\DAU
C:\Dokumente und Einstellungen\Default User
C:\Dokumente und Einstellungen\LocalService
C:\Dokumente und Einstellungen\NetworkService

Nun möchte ich von von den usern Toxilap, Admin und DAU die eigenen Dateien speichern.
Die Usernamen sind beim nächsten Rechner wieder ganz anders.

die Standart User wie All User, Defaultuser, LocalService und NetworkService sollen nicht gesichert werden.

Wie gesagt das aktuelle Konto ist kein Problem auszulenen aber die anderen zwei.

Ach ja wenn Ihr eine Lösung habt und die nur reinschreibt bin ich euch dankbar! Wenn Ihr mir aber noch zu den befehlszeilen was dazuschreibt wäre ich euch extrem Dankbar.

Danke schon mal im vorraus für eure Hilfe.

lg Toxilap
Mitglied: bastla
10.12.2010 um 12:12 Uhr
Hallo Milzbrand!

Als Grundlage / Denkanstoß zum Testen direkt an der Kommandozeile (daher nur %i und nicht %%i):
for /f "delims=" %i in ('dir /b /ad "%userprofile%\.."^|findstr /i /v /c:"All Users" /c:"Default User" /c:"LocalService" /c:"NetworkService"') do @echo "%i"
Die für "dir" und "findstr" verwendeten Optionen sollten sich mit der Online-Hilfe (zB "dir /?"') nachvollziehen lassen (ev mit Ausnahme der mehrfachen "/c:" - hier gilt die Regel: wenn einmal ein Suchbegriff (wegen enthaltener Leerzeichen) so angegeben wurde, müssen auch alle weiteren nach "/c:" geschrieben werden) ...

"%userprofile%\.." geht vom Profilordner des aktuellen Users eine Ebene nach oben und sollte sich daher auch zB für Vista / 7 (wo es ja keine "Dokumente und Einstellungen" gibt) verwenden lassen.

Alternativ (diesmal als Batch):
01.
pushd "%userprofile%\.." 
02.
for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /c:"All Users" /c:"Default User" /c:"LocalService" /c:"NetworkService"') do echo "%%i" 
03.
popd
Hier musst Du Dir für die Verarbeitung (bisher nur durch
echo "%%i"
angedeutet) keine Gedanken mehr wegen des Pfades machen ...

Grüße
bastla
Bitte warten ..
Mitglied: Milzbrand
10.12.2010 um 14:11 Uhr
Erstmal dank Dir Bastla,

Eigendlich genau das was ich suche. ich habe es ein wenig verändert:

for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /c:"All Users" /c:"Default User" /c:"LocalService" /c:"NetworkService"') do set user=%user%%%i

Entschuldige meine unwissenheit aber wie könnte ich das noch verwirklichen das ich den einzelnen Usern ne Zahl zuordne?
also im oberen Fall

User1=Toxilap
User2=Admin
User3=DAU

Ich kenne zwar den Befehl set user%zahl%=%user%%%i
denke aber das ich das damit hier nicht weiterkomme.

Dank dir schonmal.


lg Toxilap
Bitte warten ..
Mitglied: bastla
10.12.2010 um 16:10 Uhr
Hallo Milzbrand!

Wenn Du das wirklich brauchst (wozu eigentlich), dann etwa so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set /a Nr=1 
03.
pushd "%userprofile%\.." 
04.
for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /c:"All Users" /c:"Default User" /c:"LocalService" /c:"NetworkService"') do ( 
05.
    set "User!Nr!=%%i" 
06.
    set /a Nr+=1 
07.
08.
popd
Grüße
bastla

[Edit] Fehlendes "a" in Zeile 2 ergänzt [/Edit]
Bitte warten ..
Mitglied: Milzbrand
10.12.2010 um 18:21 Uhr
Hallo Bastla,

ich sitze hier nun schon geschlagene 2 Stunden und versuche die Lösung zu finden, ich will mir ja nicht nachsagen lassen es ist alles nur geklaut. fg

Deine Zeilen Passen soweit wobei im mittelteil es nicht das tut was es soll.

ich habe ein wenig rumgeschrieben und Ja ein Anfänger tut sich halt noch schwerer bzw hat noch nicht die geistigen Möglichkeiten.
Aus deinem
do (
set "User!Nr!=%%i"
set /a Nr+=1
)
habe ich gemacht
do (
set "User%Nr%=%%i"
set /a Nr=%Nr%+1
)

Leider zählt er in keinem der Fälle hoch sondern gibt immer nur User1 aus.

Wofür ich das brauche?
Wie geschrieben bekomme ich immer unterschiedliche Rechner mit den unterschiedlichsten Profilen, die ich erst sichern muss, danach das OS neuinstallieren und anschliessend die Daten wieder herstellen muss. bisher habe ich das immer umständlich per Drag and Drop gemacht. nun möchte ich den ganzen Prozess eben automatisieren.

dank dir nochmal für deine Hilfe.


lg Milzbrand
Bitte warten ..
Mitglied: Biber
10.12.2010 um 18:33 Uhr
Moin Milzbrand,

die Schreibweise set "User!Nr!=%%i" , die bastla verwendet hat bewirkt, das die Variable !Nr! quasi erst genau dann aktuell "berechnet" wird, wenn der Programmablauf genau dort angelang. Die Variablenauflösung wird also "verzögert". Neudeutsch "Delayed expansion".

Wenn du keine "DelayedExpansion" verwendest, also die Variable User%Nr% statt Variable User!Nr! ansprichst, dann hat %Nr% immer noch denselben wert, wie er VOR Beginn der ganzen Programmzeile war.
Ganze Programmzeile=Zeile beginnend "FOR /F .....{bla} DO ( .."

Suche mal hier m Forum nach DelayedExpansion-> bevor dir das nicht richtig klar ist, solltest du NICHT irgendwelche %usersprofile% wegsichern.

Grüße
Biber
Bitte warten ..
Mitglied: Milzbrand
10.12.2010 um 19:17 Uhr
Hallo Biber,

Ich habe mir die Zeilen die Bastla geschrieben hat angesehen und versucht sie erstens zu verstehen und zweitens so zu schreiben das es geht.
Leider habe ich in diesem bereich nur Anfängerwissen das es mir aber erlaubt mit Batch einfache Struckturen auszuführen.
Das ein xcopy %userprofile%\Eigene Dateien zwingend mit delayedexpansion gehandhabt werden muss kann ich mir nicht vorstellen.
Vieleicht drücke ich mich auch nur falsch aus.
Fakt ist das das was Bastla geschrieben hat nicht hochzählt und ich mir nicht erklären kann wiso bzw. was ich ändern muss das es hochzählt.


lg Milzbrand
Bitte warten ..
Mitglied: bastla
10.12.2010 um 20:31 Uhr
Hallo Milzbrand!

  • Fakt ist, dass in Zeile 2 ein "a" gefehlt hat (ist inzwischen oben nachgetragen), was dazu führte, dass zunächst nur eine Variable %User% entstanden ist.
  • Fakt ist auch, dass die weiteren User dann sehr wohl als %User1%, %User2%, ..., %Usern% erstellt wurden.
  • Fakt ist weiters, dass diese Variablen nur innerhalb des Batches zur Verfügung stehen - wenn Du als letzte Zeile noch
set User
hinzufügst, kannst Du das Ergebnis auch sehen.
  • Fakt ist schließlich, dass Du bisher noch kein Wort über den (vermeintlichen) Sinn dieser Nummerierung verloren hast.

Grüße
bastla
Bitte warten ..
Mitglied: Milzbrand
10.12.2010 um 21:02 Uhr
Juhu super Dankeeee es geht!
Nicht in deinen zeilen war der Fehler sondern in meinem kopf.
Manchmal sieht man den Wald vor lauter Bäumen nicht.

Die Nummerierung wird Folgenderweisse verwendet:

erster schritt
Backup der einzelnen User über das Netzwerk (\\lala\backup\rechner\user\eigene dateien)
In dem Backup wird eine Textdatei mit den einzelnen Usern und anderen variablen geschrieben. (Broser, Emailprogramm etc.)
zweiter schritt
Neuinstallation von Windows
dritter schritt
Auslesen der Textdatei
Erstellen der Userprofile laut der Textdatei
Automatisierte Installation der Programme und wiederherstellen der Daten (z.b. Lesezeichen)

Da ich die Variable User an mehreren Stellen in der Batch brauche ( sie hat bisher über 300 zeilen) dachte ich ist es das sinnvollste die User als User1 etc zu haben.
Warscheinlich denkst du dir jetzt da gibts einfachere Wege zum Ziel aber der erscheint mir am sinnvollsten.

Dank dir nochmals ganz sakrisch.

lg Milzbrand
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Dateien aus verschiedenen Arrays - Attribute vergleichen (5)

Frage von Giffas zum Thema Batch & Shell ...

VB for Applications
gelöst Mehrere CSV Dateien aus verschiedenen Ordner einlesen via VBA (12)

Frage von mtufangil zum Thema VB for Applications ...

Batch & Shell
Namen mehrerer Dateien ergänzen per Batchdatei (2)

Frage von adventureman2 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...