Batch Datei, Nutzerordner mit Berechtigungen
Hallo Leute,
ich sitz grad vor einer Aufgabe und steh mit batch programmierung oder überhaupt programmierung auf Kriegsfuß.
Ich würde gern mittels einer Batch Datei auf dem Server einen Ordner mit dem Namen "Scanner" anlegen.
In diesem Ordner sollen wiederrum Ordner erstellt werden, mit den Namen der Nutzer. Ich hab mir das so gedacht, dass ich die Benutzernamen manuell in eine .txt Datei eintrage, die Batch Datei diese nutzer.txt dann ausliest und daraufhin die Ordner, mit den Namen aus der txt anlegt. In jedem Benutzerordner soll wiederrum ein Ordner mit dem Namen "Original" angelegt werden.
Wichtig ist noch, dass nur der Nutzer, dem der Ordner gehört ändern Rechte über diesen hat (und der Admin natürlich Vollzugriff).
Leider fehlen mir die Kenntnisse dies zu realisieren
Gibt es da vielleicht noch eine elegantere Lösung, als die mit der txt Datei?
Danke schon mal!
Gruß
Gerschi
ich sitz grad vor einer Aufgabe und steh mit batch programmierung oder überhaupt programmierung auf Kriegsfuß.
Ich würde gern mittels einer Batch Datei auf dem Server einen Ordner mit dem Namen "Scanner" anlegen.
In diesem Ordner sollen wiederrum Ordner erstellt werden, mit den Namen der Nutzer. Ich hab mir das so gedacht, dass ich die Benutzernamen manuell in eine .txt Datei eintrage, die Batch Datei diese nutzer.txt dann ausliest und daraufhin die Ordner, mit den Namen aus der txt anlegt. In jedem Benutzerordner soll wiederrum ein Ordner mit dem Namen "Original" angelegt werden.
Wichtig ist noch, dass nur der Nutzer, dem der Ordner gehört ändern Rechte über diesen hat (und der Admin natürlich Vollzugriff).
Leider fehlen mir die Kenntnisse dies zu realisieren
Gibt es da vielleicht noch eine elegantere Lösung, als die mit der txt Datei?
Danke schon mal!
Gruß
Gerschi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139075
Url: https://administrator.de/forum/batch-datei-nutzerordner-mit-berechtigungen-139075.html
Ausgedruckt am: 22.04.2025 um 13:04 Uhr
28 Kommentare
Neuester Kommentar
Führe in einem Anmeldescript folgendes aus:
Das macht folgendes:
Schau nach ob es auf dem Serverlaufwerk einen Ordner mit %USERNAME% gibt. Wenn nicht dann erstell ihn inkl. einem enthaltenen Ordner "Original". Wenn aber ja, dann liste den Inhalt auf (das ist mir gerade so eingefallen, kenn den Befehl nicht für "tu nichts"
.
Dieses Script soll vom Client aus aufgerufen werden, dadurch entspricht USERNAME=Ordnername und der Ordnerbesitzer hat alle Rechte. domAdmin sowieso durch die Vererbung.
Wennst keine Domäne oder keine Anmeldescripts hast, dann leg die Datei auf eine zugängliches Serverlaufwerk und eine Verknüpfung in den Autostart.
*Hach! ich liebe diese quick & dirty Dinger*
if EXIST \\Servername\Scanner\%USERNAME% (
dir \\Servername\Scanner\%USERNAME%
) ELSE (
md \\Servername\Scanner\%USERNAME%
md \\Servername\Scanner\%USERNAME%\Original
)
Das macht folgendes:
Schau nach ob es auf dem Serverlaufwerk einen Ordner mit %USERNAME% gibt. Wenn nicht dann erstell ihn inkl. einem enthaltenen Ordner "Original". Wenn aber ja, dann liste den Inhalt auf (das ist mir gerade so eingefallen, kenn den Befehl nicht für "tu nichts"
Dieses Script soll vom Client aus aufgerufen werden, dadurch entspricht USERNAME=Ordnername und der Ordnerbesitzer hat alle Rechte. domAdmin sowieso durch die Vererbung.
Wennst keine Domäne oder keine Anmeldescripts hast, dann leg die Datei auf eine zugängliches Serverlaufwerk und eine Verknüpfung in den Autostart.
*Hach! ich liebe diese quick & dirty Dinger*

Servus,
es gibt ein Tool namens Xcacls damit vergibt man Rechte auf NTFS Ordner, die Aussage dass der der Ordnerbesitzer alle Rechte hat, ist sehr gewagt und mag in Waldwiesenundfreiluftinstallationen hier und dort so sein.
Ps: Anstatt ein Dir wegen tu nix zu machen - vielleicht eher ein
Und ich würde das erstellen der Ordner auch mit einer .txt machen, denn dann kann man mit administrativen Rechten genau diesem einen User per xcacls auch die Rechte geben.
Am besten also
Gruß
ich habs gerne dreckig, aber für quickys bin ich zu alt
es gibt ein Tool namens Xcacls damit vergibt man Rechte auf NTFS Ordner, die Aussage dass der der Ordnerbesitzer alle Rechte hat, ist sehr gewagt und mag in Waldwiesenundfreiluftinstallationen hier und dort so sein.
Ps: Anstatt ein Dir wegen tu nix zu machen - vielleicht eher ein
if not exist ?
Und ich würde das erstellen der Ordner auch mit einer .txt machen, denn dann kann man mit administrativen Rechten genau diesem einen User per xcacls auch die Rechte geben.
Am besten also
- xcacls.exe (nicht das .vbs) bei den redmontern runterladen
- for /? in eine Dosbox eingeben und sich die Hilfe ansehen - ist ganz einfach.
Gruß
ich habs gerne dreckig, aber für quickys bin ich zu alt
Hallo @all!
und gut ist ...
Ansonsten schließe ich mich TimoBeil an - die Textdatei als Basis ist sicher nicht zu verachten, und schematisch könnte (und dafür sollte auch das bereits an Bord befindliche "
[Edit] "/T" an die richtige Position befördert und "
Grüße
bastla
Ps: Anstatt ein Dir wegen tu nix zu machen - vielleicht eher ein
... oder einfach das Ganze reduzieren aufif not exist ?
md \\Servername\Scanner\%USERNAME%\Original 2>nul
Ansonsten schließe ich mich TimoBeil an - die Textdatei als Basis ist sicher nicht zu verachten, und schematisch könnte (und dafür sollte auch das bereits an Bord befindliche "
cacls
" genügen) das dann so aussehen:@echo off & setlocal
set "Liste=D:\Benutzerliste.txt"
set "Basis=D:\Scanner"
for /f "usebackq delims=" %%i in ("%Liste%") do (
md "%Basis%\%%i\Original" 2>nul
echo j|cacls "%Basis%\%%i" /T /G Administratoren:F %%i:C >nul
)
cacls
"-Ausgabe unterdrückt [/Edit]Grüße
bastla
Moin Gerschi,
der Wert der dynamischen Laufvariablen %%i ist nur innerhalb der FOR-Anweisung vorhanden und sichtbar.
Dem entsprechend musst du alle userverzeichnisbezogenen Arbeitsschritte (Verzeichnisse anlegen und Rechte setzen) innerhalb der FOR-Anweisungs-DO KlammerAuf-KlammerZu-Sequenz abfackeln.
Ungetestete Skizze:
Grüße
Biber
[edit] Überflüssige MD-Zeile auskommentiert - s. bastlas Hinweis unten. [/edit]
der Wert der dynamischen Laufvariablen %%i ist nur innerhalb der FOR-Anweisung vorhanden und sichtbar.
Dem entsprechend musst du alle userverzeichnisbezogenen Arbeitsschritte (Verzeichnisse anlegen und Rechte setzen) innerhalb der FOR-Anweisungs-DO KlammerAuf-KlammerZu-Sequenz abfackeln.
Ungetestete Skizze:
.....
for /f "delims=" %%i in (c:\Nutzernamen.txt) do (
REM [redundant] md "c:\ocr2\scanner\%%i"
md "c:\ocr2\scanner\%%i\Original" 2>nul
XCACLS "c:\ocr2\Scanner\%%i" /T /G %%i:F
)
.....
Grüße
Biber
[edit] Überflüssige MD-Zeile auskommentiert - s. bastlas Hinweis unten. [/edit]
@Biber
Gescheitert ist mein erster Ansatz aber nur an der falschen Position des Parameters "/T" (ich korrigiere das mal oben).
Das "
Grüße
bastla
P.S.: Du wirst ja immer noch schneller ...
Gescheitert ist mein erster Ansatz aber nur an der falschen Position des Parameters "/T" (ich korrigiere das mal oben).
Das "
md
" in Deiner Zeile 4 könnte übrigens durch die Zeile 5 mit erledigt werden ...Grüße
bastla
P.S.: Du wirst ja immer noch schneller ...
Moin bastla,
jetzt, nach dem zweiten Kaffee und dem zweiten Lesen könnte allerdings das Problem darin begündet sein, dass diese User evtl. Leerzeichen im Namen mitschleppen.
Zumindest der Zusatz "delims=" in der C:\Nutzernamen.txt-Auslese-Anweisung deutet diese Möglichkeit an.
Dann sollte auch der XCACLsAufruf auf mögliche Leerzeichen angepasst werden.
Grüße
Biber
jetzt, nach dem zweiten Kaffee und dem zweiten Lesen könnte allerdings das Problem darin begündet sein, dass diese User evtl. Leerzeichen im Namen mitschleppen.
Zumindest der Zusatz "delims=" in der C:\Nutzernamen.txt-Auslese-Anweisung deutet diese Möglichkeit an.
Dann sollte auch der XCACLsAufruf auf mögliche Leerzeichen angepasst werden.
...
FOR .....DO (
MD ....
XCACLS "c:\ocr2\Scanner\%%i" /T /G "%%i":F
)
....
Grüße
Biber

Salü,
jetzt mal gaanz langsam und der reihe nach.
Seit Bibers Kommentar ist die Funktion der Schleife doch erklärt.
Und seit Bastlas /T Änderung auch seine Version nicht nur per Copy und Paste übertragbar, sondern offensichtlich in den Status Getestet übergegangen.
Da unsere beiden Bs aus dem B Bereich aber Bereits jeder eine Batch geschrieben hat ist deine Aussage irgendwie verwirrend.
Wenn du zuerst eine Dosbox öffnest - dadrin die Batch laufen läßt - die idealerweise kein echo off hat - dann sieht du doch den Fehler.
Würdest du "deine" batch hier reinschreiben - "könnten" wir evtl. den fehler sehen, aber grob ungestestet vertraue ich auf beide Batche.
jetzt mal gaanz langsam und der reihe nach.
Seit Bibers Kommentar ist die Funktion der Schleife doch erklärt.
Und seit Bastlas /T Änderung auch seine Version nicht nur per Copy und Paste übertragbar, sondern offensichtlich in den Status Getestet übergegangen.
Da unsere beiden Bs aus dem B Bereich aber Bereits jeder eine Batch geschrieben hat ist deine Aussage irgendwie verwirrend.
- Welche der beiden Batche hast du denn als Vorlage genommen?
Wenn du zuerst eine Dosbox öffnest - dadrin die Batch laufen läßt - die idealerweise kein echo off hat - dann sieht du doch den Fehler.
Würdest du "deine" batch hier reinschreiben - "könnten" wir evtl. den fehler sehen, aber grob ungestestet vertraue ich auf beide Batche.

Servus again,
ich meinte das anders...
%%i ist immer ein Batch - als einzelner Befehl %i.
btw: du kannst Hier auch Bilder reinstellen
Die Nutzernamen haben aber keine ß,üö Sonderzeichen?
Da ich keine Struktur c:\ocr2\scanner\ haben möchte ein simples Echo vor dem MD Befehl gesetzt.
Und dann kommt sowas bei raus.
Wenn die dazugehörige Batch so aussieht:
Den Inhalt der Nutzernamen.txt erkennt man ja oben.
ich meinte das anders...
- Dosbox öffnen
- das Script aus dem Explorer in die Dosbox schieben
- Der Pfad und der Name der Batch erscheint
- Return drücken
%%i ist immer ein Batch - als einzelner Befehl %i.
btw: du kannst Hier auch Bilder reinstellen
Die Nutzernamen haben aber keine ß,üö Sonderzeichen?
Da ich keine Struktur c:\ocr2\scanner\ haben möchte ein simples Echo vor dem MD Befehl gesetzt.
Und dann kommt sowas bei raus.
c:\script\>for /F "delims=" %i in (c:\script\Nutzernamen.txt)
do (echo md "c:\ocr2\scanner\%i\Original" )
c:\script\>(echo md "c:\ocr2\scanner\Mueller\Original" )
md "c:\ocr2\scanner\Mueller\Original"
c:\script\>(echo md "c:\ocr2\scanner\meier\Original" )
md "c:\ocr2\scanner\meier\Original"
c:\script\>(echo md "c:\ocr2\scanner\Schultze\Original" )
md "c:\ocr2\scanner\Schultze\Original"
c:\script\>pause
Drücken Sie eine beliebige Taste . .
Wenn die dazugehörige Batch so aussieht:
for /f "delims=" %%i in (C:\script\Nutzernamen.txt) do (
echo md "c:\ocr2\scanner\%%i\Original"
)
pause
Mueller
meier
Schultze
meier
Schultze

*uff*
auf was hab ich mich da wieder eingelassen..
ich habs gerne dreckig, aber für quickys bin ich zu alt - war eigentlich ironisch gemeint und der Hinweis, das des Ösis Ansatz etwas neben der Spur war..
- gibts denn den Ordner "c:\ocr2\scanner"?
- Wenn du schon einen Syntaxfehler beim simplen md bekommst - wird es aber irgendwie kosmisch komisch...
- die Nutzernamen sind in c:\ als nutzernamen.txt?
auf was hab ich mich da wieder eingelassen..
ich habs gerne dreckig, aber für quickys bin ich zu alt - war eigentlich ironisch gemeint und der Hinweis, das des Ösis Ansatz etwas neben der Spur war..

und darauf komt doch schon der Syntaxfehler
Ohne einem der beiden Bs nahetreten zu wollen und weil das eigentlich kompletter Unfug ist - schreib ich die B der Bs mal um:
bzw: ist das wirklich "deine Batch"?
md "c:\ocr2\scanner\%%i\Original" 2>nul XCACLS "c:\ocr2\scanner\%%i" /T /G "%%i":f
So war aber die Vorlage nicht...
for /f "delims=" %%i in (c:\nutzernamen.txt) do
(echo md "c:\ocr2\scanner\%%i\Original" >>c:\doit.cmd
echo XCACLS "c:\ocr2\scanner\%%i" /T /G "%%i":f >>c:\doit.cmd
)
echo pause >>c:\doit.cmd
if not exist xcacls.exe echo xcacls nicht gefunden - kann also nicht mit Bibers Batch laufen
Echo Xcacls runterladen oder Bastlas batch nutzen
c:\doit.cmd
das ding jetzt mal ohne Änderungen haaargenauso laufen lassen - wie immer in einer eigenen Dosbox.
Was passiert?

kann nicht..
der Syntaxfehler ist doch beim md "c:\ocr2\scanner" erschienen....
Die Zeile gibts bei mir doch gar nicht - schon allein deswegen ist das mit der Meldung irritierend.
Jetzt gehts du mal an einen anderen Rechner und läßt das laufen.
Vorher aber die Nutzerdaten.txt an die gleiche Stelle im Dateisystem kopieren.
Glaub mir, das was ich um 11:59:19 Uhr geschrieben hab - ist eigentlich lachhaft für so ein micker Schleifchen haargenau der Zustand, wie er bei einem Winblows Xp Servicepack egal rauskommt.
der Syntaxfehler ist doch beim md "c:\ocr2\scanner" erschienen....
Die Zeile gibts bei mir doch gar nicht - schon allein deswegen ist das mit der Meldung irritierend.
Jetzt gehts du mal an einen anderen Rechner und läßt das laufen.
Vorher aber die Nutzerdaten.txt an die gleiche Stelle im Dateisystem kopieren.
Glaub mir, das was ich um 11:59:19 Uhr geschrieben hab - ist eigentlich lachhaft für so ein micker Schleifchen haargenau der Zustand, wie er bei einem Winblows Xp Servicepack egal rauskommt.

der letzte Versuch aus dem Dirty doch noch einen doppelquickie zu machen..
UNd was genau ist der UNterschied der Bat, die das geschafft hat und zu denen, die gleich einen Syntaktischen fehler raus werfen, bevor Sie irgendwas machen?
UNd was genau ist der UNterschied der Bat, die das geschafft hat und zu denen, die gleich einen Syntaktischen fehler raus werfen, bevor Sie irgendwas machen?
- Die Ordner sind schon alle da?
- cacls oder xcacls
- was steht in der c:\doit.cmd - und bitte zwischen <code> </code> Blöcken auf externe Bilderhoster hab ich keine klickeritis.

Ein aller allerletztes Wort
Diese Batch ist so banal, da brauchts keinen Biber oder Bastla vorgehehend als B aus dem B Bereich genannt.
Das was du da um 7.55 und ebbes gepostet hat - kann garnicht funktioniert haben.
Und was es mit rem redundant auf sich hat...
Edit:
- ist doch erst morgen, woher wußte Biber das dieses Thema erst morgen gelöst sein wird?
Diese Batch ist so banal, da brauchts keinen Biber oder Bastla vorgehehend als B aus dem B Bereich genannt.
Das was du da um 7.55 und ebbes gepostet hat - kann garnicht funktioniert haben.
Und was es mit rem redundant auf sich hat...
for /f "delims=" %%i in (c:\Nutzernamen.txt) do md "c:\ocr2\scanner\%%i\Original"
pause
for /f "delims=" %%i in (c:\Nutzernamen.txt) do XCACLS "c:\ocr2\Scanner\%%i" /T /G "%%i":F
pause
T /G "%%i":F


In dem speziellen Fall nicht persönlich nehmen
Dein Problem ist gelöst wir erlöst
Bekommst du da Punkte weil dus gelöst hasst?
Nur wenn du nicht aus Flensburg bist und ich hab das Problem ganz sicher nicht gelöst das Bier geht an dieBeiden Bs.Gruß
Gerschi
@ Bastla: so genau will ich das garnicht wissen, nachher liegt es noch an nem lahmen Netz und das xcacls soll einen halbangelegten Ordner anfassen oder noch einfacher..
Moin gerschi,
Lass dich bloss nicht verwirren durch bastlas und T-Mos Wortspielchen.
Es ist viel einfacher: Der Haken an diesem Forum hilft dir später beim Suchen nach gelösten Beiträgen.
Und da es bei manchen Beitragserstellern mit dem Abhaken hakt, wollte T-Mo noch mal eben einhaken.
Aber, um mal auf den Punkt zu kommen: Punkte bekommt er nicht dafür.
So einleuchtender?
Grüße
Biber
Lass dich bloss nicht verwirren durch bastlas und T-Mos Wortspielchen.
Es ist viel einfacher: Der Haken an diesem Forum hilft dir später beim Suchen nach gelösten Beiträgen.
Und da es bei manchen Beitragserstellern mit dem Abhaken hakt, wollte T-Mo noch mal eben einhaken.
Aber, um mal auf den Punkt zu kommen: Punkte bekommt er nicht dafür.
So einleuchtender?
Grüße
Biber