Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

perl verzeichnis auslesen (berechtigungen)

Empfohlene Antworten

Veröffentlicht

hi @ all,

ich habe folgendes script:


#!/usr/bin/perl

$Verzeichnis = 'e:/programmierung';

opendir(DIR, $Verzeichnis) || die "Kann Verzeichnis nicht oeffnen $Verzeichnis:";
@VerzeichnisInhalt = readdir(DIR);
closedir(DIR);

foreach $Eintrag (@VerzeichnisInhalt){
print "$Eintrag\n";
system("XCACLS $Eintrag");
}
[/PHP]

dieser schnipsel, soll mir für jedes verzeichnis die berechtigungen ausgeben.

also z.b.:

.

E:\programmierung\Perl Jeder:(OI)(CI)F

..

E:\programmierung Jeder:(OI)(CI)F

das klappt ja auch ganz schön, aber für jeden unterordner bringt er mir folgende fehlermeldung:

C++

ERROR: Das System kann die angegebene Datei nicht finden.

datenbanken

ERROR: Das System kann die angegebene Datei nicht finden.

java

ERROR: Das System kann die angegebene Datei nicht finden.

Perl

ERROR: Das System kann die angegebene Datei nicht finden.

php

ERROR: Das System kann die angegebene Datei nicht finden.

tools

ERROR: Das System kann die angegebene Datei nicht finden.

VB

ERROR: Das System kann die angegebene Datei nicht finden.

xcacls

ERROR: Das System kann die angegebene Datei nicht finden.

xcacls.exe

ERROR: Das System kann die angegebene Datei nicht finden.

was mach ich falsch??

die struktur meiner testumgebung sieht so aus:

e:

programmierung

C++

datenbanken

java

Perl

mein_perl_script

php

tools

VB

xcacls

danke korea1

Servus,

1. Die shebang-Zeile #!/usr/bin/perl scheint mir unter Windows nicht wirklich sinnvoll zu sein

2. Da leider die Smilies aktiviert sind, kann ich dein Beispiel nicht ganz entziffern

3. Was für Berechtigungen meinst du unter Windows (Bin da leider nicht so fit)

4. Was macht XCACLS ?

5. Als Errormeldung steht da ja, dass er die Datei nicht finden kann.

Hast du mal versucht das Verzeichnis absolut anstatt relativ zu übergeben ?

cya

alligator

an stelle der smilies setzt einfach einen doppelpunkt und ein ( .

xcacls muss in c:\winnt vorhanden sein, das ist ein tool, das dir auf kommandozeilen ebene erlaubt, die datei oder verzeichnisrechte zu ändern.

xcacls liegt bei mir auch c:\winnt. und was ich nicht begreif ist, dass es bei den ersten beiden verzeichnissen funktioniert und dann nicht mehr.

verzeichnisrechte meine ich: welche gruppe/user darf was. also lesen schreiben....

mein script liegt unter e:/programmierung/perl

dort gibt er mir die berechtigung auch an und für e:/programmierung gibt er mir die berechtigungen auch an.

das heisst, er gibt mir erst die rechte des ordners an, in dem das ausführende script liegt und dann den root ordner, den ich in $Verzeichnis angegeben hab. die anderen ordner funktionieren nicht.

hier nochmal meine richtige ordnerstruktur, die hats auch net so richtig angezeigt.

e

|_

programmierung

|_php

|_java

|_c++

|_perl

|_

|_mein script

wenn ich das script unter e:/programmierung lege, dann bringt er mir die berechtigung aller ordner, die sich auf dieser ebene befinden. hm... eigentlich müsste es doch auch so gehen, dass das script nicht dort liegen muss, oder?

und wie bieg ich das hin, dass er mir auch in die unterordner der jeweiligen ordner geht, falls vorhanden??

korea1

also in php gibt readir immer nur die filenames zurück.

du müsstest dann noch z.b. is_dir() auf den filename anwenden um überhaupt zu wissen ob du es mit einer datei bzw einem ordner zu tuen hast.

falls es ei ordner ist dann mach wieder readdir auf den ordner und lese darin weiter aus.

diese angaben sind ohne gewähr, da ich keine ahnun habe wie perl `s readdir funktioniert.

Weiterhin ist das alles nur zu beachten wenn dieses XCACLS nur auf dateien anwendbar ist!

Hallo nochmal,

hast du es schon mit absoluter Pfadangabe versucht ?

Also $Eintrag=e:/abc/XY

anstatt $Eintrag=XY, denn dann müsste auch überall funktionieren.

Zur Frage mit den Unterordern: Rekursion ist dein Freund.

Tipp: Schau dir mal das Modul File::Find an.

cya

alligator

@alligator

das ist doch keine relative pfadangabe, soweit ich weiss, oder??

$Verzeichnis_=_'e:/programmierung';

mit modulen hatte ich noch nicht so viel am hut.

das modul muss ich mir erst downloaden, oder?

und dann einbinden.

perl bietet doch zum downloaden von modulen ne konsole an, oder? wie hieß die nochmal??

danke korea1

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.