Batchdatei für automatischen Backup der Eigenen Dateien mit verschiedenen Profilen
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156736
Url: https://administrator.de/forum/batchdatei-fuer-automatischen-backup-der-eigenen-dateien-mit-verschiedenen-profilen-156736.html
Ausgedruckt am: 20.04.2025 um 15:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo Milzbrand!
Als Grundlage / Denkanstoß zum Testen direkt an der Kommandozeile (daher nur %i und nicht %%i):
Die für "
"
Alternativ (diesmal als Batch):
Hier musst Du Dir für die Verarbeitung (bisher nur durch
angedeutet) keine Gedanken mehr wegen des Pfades machen ...
Grüße
bastla
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"
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):
pushd "%userprofile%\.."
for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /c:"All Users" /c:"Default User" /c:"LocalService" /c:"NetworkService"') do echo "%%i"
popd
echo "%%i"
Grüße
bastla
Hallo Milzbrand!
Wenn Du das wirklich brauchst (wozu eigentlich), dann etwa so:
Grüße
bastla
[Edit] Fehlendes "a" in Zeile 2 ergänzt [/Edit]
Wenn Du das wirklich brauchst (wozu eigentlich), dann etwa so:
@echo off & setlocal enabledelayedexpansion
set /a Nr=1
pushd "%userprofile%\.."
for /f "delims=" %%i in ('dir /b /ad^|findstr /i /v /c:"All Users" /c:"Default User" /c:"LocalService" /c:"NetworkService"') do (
set "User!Nr!=%%i"
set /a Nr+=1
)
popd
bastla
[Edit] Fehlendes "a" in Zeile 2 ergänzt [/Edit]
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
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
Hallo Milzbrand!
hinzufügst, kannst Du das Ergebnis auch sehen.
Grüße
bastla
- 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
- Fakt ist schließlich, dass Du bisher noch kein Wort über den (vermeintlichen) Sinn dieser Nummerierung verloren hast.
Grüße
bastla