winfried-hh
Goto Top

In Batch-Datei der aktuellen Ordernamen ohne Stammordner als Parameter verwenden

Hallo in die Runde,
vor allem liebe Batch-Profis,

wenn ich auf einem Server 2003 folge Ordnerstruktur habe:

d:\Schuelerdaten | +- a.schmidt | +- b.mueller | +- c.meier | +- d.schulz

und dann mittels
  • mittels icacls.exe "d:\schuelerdaten\a.schmidt\*" /T /grant "a.schmidt"face-sadOI)(CI)F dem Benutzer a.schmidt Vollzugriff auf seinen Ordner gewähren möchte
  • mittels icacls.exe "d:\schuelerdaten\b.mueller\*" /T /grant "b.mueller"face-sadOI)(CI)F dem Benutzer b.mueller Vollzugriff auf seinen Ordner gewähren möchte

und so weiter, wie kann ich das "rekursiv automatisieren", so dass immer der Ordnername (ohne Stammordner) als Benutzername zur Verfügung steht. Nach unten darf sich das natürlich nicht fortsetzen, auf den Ordner d:\schuelerdaten\b.mueller\fotos soll natürlich trotzdem dem Benutzer b.mueller der Zugriff gewährt werden, nicht dem nicht existierenden Benutzer fotos face-smile

P.S.: Wenn's geht, ohne Powershell, damit habe ich gar keine Erfahrungen

Content-Key: 348073

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

Printed on: April 20, 2024 at 08:04 o'clock

Mitglied: 133883
Solution 133883 Sep 03, 2017 updated at 14:17:06 (UTC)
Goto Top
Einfache FOR-Schleife
for /d %%a in ("D:\Schuelerdaten\*") do icacls "%%~a\*" /T /grant "%%~nxa":(OI)(CI)F   
Sollte man als Level 2 eigentlich mittlerweile kennen ...

Gruß
Member: Winfried-HH
Winfried-HH Sep 03, 2017 at 14:17:50 (UTC)
Goto Top
Zitat von @133883:

for /d %%a in ("D:\Schuelerdaten\*") do icacls "%%~a\*" /T /grant "%%~nxa"face-sadOI)(CI)F

Zum Verständnis: Wofür steht %%~a bzw. %%~nxa?
Mitglied: 133883
133883 Sep 03, 2017 updated at 14:20:17 (UTC)
Goto Top
For /? oder set /? eingeben, ganz unten steht die Zusammenfassung der Variablenexpandierung
Member: Pjordorf
Solution Pjordorf Sep 03, 2017 at 16:20:01 (UTC)
Goto Top
Hallo,

Zitat von @Winfried-HH:
Zum Verständnis: Wofür steht %%~a bzw. %%~nxa?
Schon mal ein
@echo off
for /d %%a in ("D:\Schuelerdaten\*") do (  
Echo Tilde a = "%%~a\*"   
Echo Tilde nxa = "%%~nxa"  
Echo ...
)
gemacht?

Gruß,
Peter
Member: Winfried-HH
Winfried-HH Sep 03, 2017 updated at 16:41:49 (UTC)
Goto Top
Zitat von @133883:

For /? oder set /? eingeben, ganz unten steht die Zusammenfassung der Variablenexpandierung

Wie auch immer, es scheint zu gehen. Ich habe zum Testen mal diese Version ausgeführt:
for /d %%a in ("D:\schuelerdaten\*") do echo icacls "%%~a\*" /T /C /grant "%%~nxa"(OI)(CI)F >> d:testbat.txt  

und bekomme z.B. folgende Ausgaben:
icacls "D:\schuelerdaten\Flo.Babst\*" /T /C /grant "Flo.Babst"(OI)(CI)F icacls "D:\homes\Nin.B÷ge\*" /T /C /grant "Nin.B÷ge"(OI)(CI)F


In der zweiten Zeile sieht man allerdings ein Problem. Das ÷ steht hier für ein rechteckiges Zeichen, dass hier nicht dargestellt werden will. Und eigentlich steht es für einen Umlaut. Die Batch hat also Probleme mit Umlauten face-sad
Any ideas?
Mitglied: 133883
Solution 133883 Sep 03, 2017 updated at 16:45:23 (UTC)
Goto Top
Logisch, einfach ein
Chcp 1252
An den Anfang setzen, dann klappt's auch mit den Umlauten. Steht aber auf so ziemlich jeder Seite dazu im Netz.
Member: Winfried-HH
Winfried-HH Sep 03, 2017 at 16:48:29 (UTC)
Goto Top
Zitat von @133883:

Logisch, einfach ein Chcp 1252 an den Anfang setzen,

Stimmt ... sorry, das hatte ich zwar ausprobiert, mich aber vertippt. dann kann es nicht gehen.

Danke!