gerschi
Goto Top

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 face-sad
Gibt es da vielleicht noch eine elegantere Lösung, als die mit der txt Datei?

Danke schon mal!

Gruß
Gerschi

Content-Key: 139075

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: MaceWindu
MaceWindu 24.03.2010 um 16:30:46 Uhr
Goto Top
Führe in einem Anmeldescript folgendes aus:

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" face-smile.

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*
Mitglied: 60730
60730 24.03.2010 um 17:23:10 Uhr
Goto Top
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
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
http://support.microsoft.com/kb/318754/de
Mitglied: bastla
bastla 24.03.2010 um 19:41:10 Uhr
Goto Top
Hallo @all!
Ps: Anstatt ein Dir wegen tu nix zu machen - vielleicht eher ein
if not exist ?
... oder einfach das Ganze reduzieren auf
md \\Servername\Scanner\%USERNAME%\Original 2>nul
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 "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  
)
[Edit] "/T" an die richtige Position befördert und "cacls"-Ausgabe unterdrückt [/Edit]

Grüße
bastla
Mitglied: Gerschi
Gerschi 25.03.2010 um 07:56:35 Uhr
Goto Top
Danke für die schnellen Antworten!
Leider funktioniert es so nicht, wie du es beschrieben hast bastla. Der Rechner führt nix aus face-sad
Hab mir jetzt selber ein kleines Skript zusammen gebastelt jedoch bekomm ichs nicht mit den Berechtigungen hin face-sad
Mein Skript sieht folgendermaßen aus und legt nun die Ordner, mit den Namen aus der .txt Datei an:

md "c:\ocr2\Scanner"
for /f "delims=" %%i in (c:\Nutzernamen.txt) do md "c:\ocr2\scanner\%%i" 2>nul
do md "c:\ocr2\scanner\%%i\Original"

Hab es mit den Berechtigungen so versucht:

XCACLS "c:\ocr2\Scanner\%%i" /T /G %%i:F

Wie gesagt, so geht das mit den Ordnern, aber die Berechtigungen machen mir Kopfschmerzen da es einfach nicht geht face-sad
Wäre sehr dankbar für euchre Hilfe

Gruß
Gerschi
Mitglied: Biber
Biber 25.03.2010 um 08:37:05 Uhr
Goto Top
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:
.....
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]
Mitglied: bastla
bastla 25.03.2010 um 08:48:42 Uhr
Goto Top
@Biber
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 ... face-wink
Mitglied: Biber
Biber 25.03.2010 um 09:06:34 Uhr
Goto Top
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.
...
FOR .....DO (
      MD ....
      XCACLS "c:\ocr2\Scanner\%%i" /T /G "%%i":F   
)
....

Grüße
Biber
Mitglied: Gerschi
Gerschi 25.03.2010 um 09:39:08 Uhr
Goto Top
Danke für die Antworten!
Leider funktioniert es immernoch nicht face-sad
Jetzt legt er nur den Ordner "scanner" an , keine Unterordner und auch keine Berechtigungen face-sad
Ich denk mal, es haut was mit der Shleife nich hin, da scanner ja außerhalb der Schleife angelegt wird, wie ich es oben beschrieben hab.

Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 10:08:06 Uhr
Goto Top
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.
  • 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.
Mitglied: Gerschi
Gerschi 25.03.2010 um 10:54:17 Uhr
Goto Top
Tut mir leid für die Verwirrung!
Ich hab Bibers vorlage genommen.
So sieht meine Batch derzeit aus:

md "c:\ocr2\scanner"
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
)

Wenn ich es über die Dosbox starte kommt folgende Fehlermeldung:

http://www.fotos-hochladen.net/cmd208jbzaq.jpg

Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 11:13:09 Uhr
Goto Top
Servus again,

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
Den Inhalt der Nutzernamen.txt erkennt man ja oben.
Mueller
meier
Schultze
Mitglied: Gerschi
Gerschi 25.03.2010 um 11:19:29 Uhr
Goto Top
Achso, dann gibt er mir nen Syntaxfehler aus:

http://www.fotos-hochladen.net/cmdwjyqrxdt.jpg

Nein, ß und sowas sind nicht in den Namen enthalten.
Mitglied: 60730
60730 25.03.2010 um 11:25:09 Uhr
Goto Top
*uff*

  • 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..
Mitglied: Gerschi
Gerschi 25.03.2010 um 11:50:40 Uhr
Goto Top
Ja, der Ordner "scanner" wird ja vor der Schleife angelegt:

md "c:\ocr2\scanner"
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
)

Ja, die Nutzernamen befinden sich in der nutzernamen.txt

Mit dem Skript, welches ich in dem post von 7:55Uhr gepostet hab geht das Ordner anlegen ja, nur die Berechtigungen vergeben hab ich nicht hin bekommen.

Danke für die Mühe und die Gedult!

Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 11:59:19 Uhr
Goto Top
Zitat von @Gerschi:
Ja, der Ordner "scanner" wird ja vor der Schleife angelegt:

md "c:\ocr2\scanner"

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
alles in einer Zeile?
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?
Mitglied: Gerschi
Gerschi 25.03.2010 um 12:06:53 Uhr
Goto Top
Da kommt haargenau der selbe Fehler!?
Das gibts doch nicht!


Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 12:12:02 Uhr
Goto Top
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.
Mitglied: Gerschi
Gerschi 25.03.2010 um 12:23:16 Uhr
Goto Top
So war an nem anderen Rechner und da kam folgender Fehler:#

http://www.fotos-hochladen.net/batsrle9yi4.jpg

Mit dem Skript, welches ich in dem post von 7:55Uhr gepostet hab geht das Ordner anlegen ja, nur die Berechtigungen vergeben hab ich nicht hin bekommen.

Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 12:31:55 Uhr
Goto Top
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?

  • 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.
Mitglied: Gerschi
Gerschi 25.03.2010 um 12:43:10 Uhr
Goto Top
Es wird kein Ordner angelegt. Den ordner ocr2 hab ich auf dem anderen Rechner erstellt, sowie die nutzernamen.txt.
Bei mir gibt es keine doit.cmd?
Was meinst du mit cacls oder xcacls?
Würde es gehen, das du meine Funktionierende bat als grundlage nimmst und da einfach noch die Ordnerberechtigungen setzt?

Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 12:58:07 Uhr
Goto Top
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...

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
Edit:
T /G "%%i":F - ist doch erst morgen, woher wußte Biber das dieses Thema erst morgen gelöst sein wird?
Mitglied: Gerschi
Gerschi 25.03.2010 um 13:28:54 Uhr
Goto Top
Vielen, vielen Dank!
So klappts face-smile
Echt super!

Gruß
Gerschi
Mitglied: 60730
60730 25.03.2010 um 13:32:47 Uhr
Goto Top
Zitat von @Gerschi:
Vielen, vielen Dank!
So klappts face-smile
Echt super!

Gruß
Gerschi
Bittte bitte bitte Wie kann ich einen Beitrag als gelöst markieren?

Gruß
Mitglied: Gerschi
Gerschi 25.03.2010 um 14:13:10 Uhr
Goto Top
Bin ja neu hier, was hats denn mit dem Haken auf sich?
Bekommst du da Punkte weil dus gelöst hasst?

Gruß
Gerschi
Mitglied: bastla
bastla 25.03.2010 um 17:22:26 Uhr
Goto Top
Hallo Gerschi!
Bekommst du da Punkte weil dus gelöst hasst?
Glaub mir - niemand hier hasst gelöste Threads ... face-wink

Übrigens (korrigiere mich bitte, wenn ich falsch liege): Kaum war die Klammer (der Art "(") am Ende der "for"-Zeile platziert, war's auch schon vorbei mit dem Syntaxfehler ...

Grüße
bastla
Mitglied: 60730
60730 25.03.2010 um 20:31:14 Uhr
Goto Top
Zitat von @Gerschi:
Bin ja neu hier, was hats denn mit dem Haken auf sich?

In dem speziellen Fall nicht persönlich nehmen

Dein Problem ist gelöst wir erlöst face-wink

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
yupp
@ 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..
Mitglied: Biber
Biber 25.03.2010 um 20:42:10 Uhr
Goto Top
Moin gerschi,

Zitat von @Gerschi:
Bin ja neu hier, was hats denn mit dem Haken auf sich?
Lass dich bloss nicht verwirren durch bastlas und T-Mos Wortspielchen.
Es ist viel einfacher: Der Haken an diesem Forum ist, dass nur gelöste Beiträge in dem Light-Ableger "benutzer.de" angezeigt werden.
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
Mitglied: Gerschi
Gerschi 26.03.2010 um 12:03:47 Uhr
Goto Top
Jap, jetzt versteh ich!
Danke!

Gruß
Gerschi