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-ID: 348073

Url: https://administrator.de/forum/in-batch-datei-der-aktuellen-ordernamen-ohne-stammordner-als-parameter-verwenden-348073.html

Ausgedruckt am: 02.04.2025 um 07:04 Uhr

133883
Lösung 133883 03.09.2017 aktualisiert um 16:17:06 Uhr
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ß
Winfried-HH
Winfried-HH 03.09.2017 um 16:17:50 Uhr
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?
133883
133883 03.09.2017 aktualisiert um 16:20:17 Uhr
Goto Top
For /? oder set /? eingeben, ganz unten steht die Zusammenfassung der Variablenexpandierung
Pjordorf
Lösung Pjordorf 03.09.2017 um 18:20:01 Uhr
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
Winfried-HH
Winfried-HH 03.09.2017 aktualisiert um 18:41:49 Uhr
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?
133883
Lösung 133883 03.09.2017 aktualisiert um 18:45:23 Uhr
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.
Winfried-HH
Winfried-HH 03.09.2017 um 18:48:29 Uhr
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!