Sasch Nehls: Keine Rechte um unter Windows Dateien Umbenennen

Hallo,

ich habe ein Perl Script geschrieben, welches mir die Dateien in einem bestimmten Ordner ausliest und anschließend die Dateien umbenennen soll. Ich verwende Win2000 und bin als Admin angemeldet. Trotzdem meldet mir das Perl Script immer "Permission Denied", wenn ich eine Datei umbenennen will?! Gibt es eine alternative?

---- schnipp ----
$zaehler_1=0;
opendir(VERZEICHNIS, "$pfad");
while ($datei = readdir(VERZEICHNIS))
  {
    if ($datei =~ /.jpg$/)
      {
        push @dateien, $datei;
      }
  }
closedir (VERZEICHNIS);

foreach (@dateien)
  {
    $zaehler_1++;
    $tmp = sprintf "bild%03d.jpg\n",$zaehler_1;
    $boolean = rename("$pfad/$_","$tmp");
    print "\nFehler: $!";
  }
---- schnapp ----

  1. hi,

    ich habe ein Perl Script geschrieben, welches mir die Dateien in einem bestimmten Ordner ausliest und anschließend die Dateien umbenennen soll. Ich verwende Win2000 und bin als Admin angemeldet.

    Wichtig ist noch: Läßt du dein Script als CGI-Script über einen lokalen Webserver ausführen oder rufst du es von der Konsole aus auf?

    Trotzdem meldet mir das Perl Script immer "Permission Denied"

    Es müßte eigentlich noch ein kleines bißchen mehr in der Fehlermeldung stehen.

    opendir(VERZEICHNIS, "$pfad");

    Dein Script selbst sieht so aus, als wärs korrekt. Aber genau die Stelle, auf die es ankommt, ist nicht genügend erklärt. Was steckt denn in deiner Variablen "$pfad" drin?

    Grüße aus Berlin

    Christoph S.

    1. Wichtig ist noch: Läßt du dein Script als CGI-Script über einen lokalen Webserver ausführen oder rufst du es von der Konsole aus auf?

      Ich rufe das Script über Konsole auf mittels "Perl script.pl".

      Es müßte eigentlich noch ein kleines bißchen mehr in der Fehlermeldung stehen.

      Die Fehlermeldung ist ja nur die spezifische, welche in der Variable $! steht, und da steht nur drin Permission Denied. Das Script ansich läuft fehlerfrei durch.

      Dein Script selbst sieht so aus, als wärs korrekt. Aber genau die Stelle, auf die es ankommt, ist nicht genügend erklärt. Was steckt denn in deiner Variablen "$pfad" drin?

      $pfad = "images/Bilder" Aber ich kann ausschließen dass die Pfadangabe falsch ist. Er zeigt mir ja alle Dateien an.

  2. Hallo,

    foreach (@dateien)
      {
        $zaehler_1++;
        $tmp = sprintf "bild%03d.jpg\n",$zaehler_1;

    ^Was soll das Steuerzeichen [NewLine] dort im Dateinamen?

    $boolean = rename("$pfad/$_","$tmp");

    ^Hier willst Du eine Datei z.B in "bild001.jpg\n" umbenennen. Das wird nicht funktionieren.

    print "\nFehler: $!";
      }

    viele Grüße

    Axel

    1. Danke, manchmal ist man echt blind. Aber trotzdem war noch ein Fehler in dieser Zeile:
      $boolean = rename("$pfad/$_","$tmp");
                                    ^^^^ Hier ist nicht der  gleich Ordner wie bei der Quelldatei angegeben, deswegen verschiebt er die Datei!