Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12453[/thread]

*.bat löschen

Leser: 1


<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten
Snicker
 2008-09-08 13:45
#114340 #114340
User since
2008-08-09
25 Artikel
BenutzerIn
[default_avatar]
Möchte am Ende meines Perlprogrammes mehrere *.bat Datein mittels "unlink" löschen. Leider bekomme ich immer die Fehlermeldung, dass ich keine Zugriffserlaubnis habe.
Wie schaffe ich es, das Windows XP nicht mehr rumzickt?
Zumal es egal ist, ob ich die *.bat Datei ausgeführt habe oder nicht. Bekomme jedes mal keinen Zugriff auf die Datei.

Das selbe Problem habe ich auch beim löschen von einem anderem Dateityp, wobei jedoch immer nur die letzte Datei (also z.B. die Datei *_100.txt von 100 Datein) nicht gelöscht werden kann, da ich keine Zugriffserlaubnis habe.
Das selbe Problem ist auch in diesem Threat beschrieben. Der Änderungsvorschlag
GwenDragon+2008-05-20 10:46:53--
Extras -> Ordneroptionen -> Ansicht
[x] Ordnerfenster in eigenem Prozess starten

im Explorer ist bei mir leider wirkungslos.
ich
 2008-09-08 15:12
#114349 #114349
User since
2003-09-19
120 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo Snicker,

zickt da immer genau die gleiche Datei rum oder sind es unterschiedliche?

Was passiert, wenn du z.b. nach einem unlink() Fehler eine Sekunden wartest (sleep) und danach die gleiche Datei nochmal zu loeschen versuchst? Dann sollte (wie im anderen Thread vermutet) ein Virenscanner oder der Windows Indexer mit der Datei fertig sein.

Gruesse
jan
If you tell the truth you don't have to remember anything.
-- Mark Twain
Snicker
 2008-09-08 17:25
#114355 #114355
User since
2008-08-09
25 Artikel
BenutzerIn
[default_avatar]
Hi ich,
mit sleep() komme ich auch nicht weiter, unabhängig von der Zeit die verstreicht. Die Datei ist für mich nicht zugreifbar. Das gilt für alle Batchdatein und immer für die letzte von meinen anderen Files.
hier mal ein Ausschnitt vom Quelltext:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
    $q = 0;
    while($q < (@einstellungen_para_wert[12] * @einstellungen_para_wert[13])){
        unlink ("$modelldatei$q@einstellungen_para_wert[1]") or warn "$!";
        while (-e "$modelldatei$q@einstellungen_para_wert[1]"){
            sleep (1);
            unlink ("$modelldatei$q@einstellungen_para_wert[1]") or warn "$!";
        }
        $q++;
    }
GwenDragon
 2008-09-08 17:44
#114356 #114356
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Anderes Problem:
Quote
Code (perl): (dl )
while($q < (@einstellungen_para_wert[12] * @einstellungen_para_wert[13])){

Wieso verwendest du einen Array-Slice?
Sollte das nicht $einstellungen_para_wert[12] heißen?
Verwende doch bitte use strict; und use warnings; in deinem Code.

Zu deinem Problem mit der Datei:
Welche Zugriffsrechte hat die denn?
Auch die ACL, also Zugriffsrechte nach Windows-Usern und -Gruppen, ansehen!
Snicker
 2008-09-08 18:42
#114359 #114359
User since
2008-08-09
25 Artikel
BenutzerIn
[default_avatar]
GwenDragon+2008-09-08 15:44:25--
Anderes Problem:
Quote
Code (perl): (dl )
while($q < (@einstellungen_para_wert[12] * @einstellungen_para_wert[13])){

Wieso verwendest du einen Array-Slice?
Sollte das nicht $einstellungen_para_wert[12] heißen?
Verwende doch bitte use strict; und use warnings; in deinem Code.

stimmt schon wie es da steht. Es werden zwei Zahlen aus einer TXT Datei eingelesen und diese sind für die maximale Berechnungsanzahl notwendig. Gebe zu, dass es nicht sonderlich übersichtlich ist.
Ich benutze auch use strict; und use warnings; , nur in dem Quelltextausschnitt kommen diese nicht vor.


GwenDragon+2008-09-08 15:44:25--
Zu deinem Problem mit der Datei:
Welche Zugriffsrechte hat die denn?
Auch die ACL, also Zugriffsrechte nach Windows-Usern und -Gruppen, ansehen!

Wie kann ich mir die Zugriffsrechte von den Datein anzeigen lassen? Hab trotz google nichts hilfreiches gefunden.
Bin selbst als Administrator angemeldet.
renee
 2008-09-08 18:48
#114360 #114360
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Snicker+2008-09-08 16:42:16--
GwenDragon+2008-09-08 15:44:25--
Anderes Problem:
Quote
Code (perl): (dl )
while($q < (@einstellungen_para_wert[12] * @einstellungen_para_wert[13])){

Wieso verwendest du einen Array-Slice?
Sollte das nicht $einstellungen_para_wert[12] heißen?
Verwende doch bitte use strict; und use warnings; in deinem Code.

stimmt schon wie es da steht. Es werden zwei Zahlen aus einer TXT Datei eingelesen und diese sind für die maximale Berechnungsanzahl notwendig. Gebe zu, dass es nicht sonderlich übersichtlich ist.
Ich benutze auch use strict; und use warnings; , nur in dem Quelltextausschnitt kommen diese nicht vor.


Dann sollte Dir warnings aber eine Warnung ausgeben...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-09-08 19:01
#114363 #114363
Das windowsige Kommandozeilenprogramm zur Anzeige der Rechte heißt cacls.exe.

Ansonsten gibt es noch:
AccessChk http://technet.microsoft.com/de-de/sysinternals/bb...
Chml: http://www.minasi.com/vista/chml.htm
Snicker
 2008-09-09 12:05
#114404 #114404
User since
2008-08-09
25 Artikel
BenutzerIn
[default_avatar]
renee+2008-09-08 16:48:21--
Dann sollte Dir warnings aber eine Warnung ausgeben...

Warum sollte man keine Arrays verwenden und statt dessen lieber skalare? Sehe selbst da keinen Vor-/Nachteil.

Gast+2008-09-08 17:01:56--
Das windowsige Kommandozeilenprogramm zur Anzeige der Rechte heißt cacls.exe.

Ansonsten gibt es noch:
AccessChk http://technet.microsoft.com/de-de/sysinternals/bb...
Chml: http://www.minasi.com/vista/chml.htm

hab jetzt mit AccessChk meine Zugriffsrechte überprüft. Habe auf alle Datein volle Lese-/Schreibrechte (RW).
Hab jetzt auch mal versucht alle *.bat Datein mit einer loeschen.bat zu entfernen. Das klappt auch nur, wenn die Perlkonsole geschlossen ist. Sobald sie noch geöffnet ist, erhalte ich keinen Zugriff auf die *.bat.
renee
 2008-09-09 12:34
#114410 #114410
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du möchtest einen einzelnen Wert aus dem Array haben und nicht mehrere Elemente (ein sogenannter Array-Slice). Wenn Du nur einen einzelnen Wert aus einem Array haben willst, ändert sich das sogenannte Sigil von "@" zu "$"...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my @array = ( 1..10 );

# Hole Element mit dem Index 2 aus dem Array.
# Da Rückgabewert ein einzelnes Element ist (Skalar), wird
# aus dem "@" ein "$" vor "array".
my $einzelnes_element = $array[2];

# hole mehrere Elemente aus dem Array
# Da Rückgabewert eine Liste ist, bleibt das "@" vor "array"
my @subarray = @array[3,7,1];
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-09-09 12:35
#114411 #114411
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Snicker+2008-09-09 10:05:42--
renee+2008-09-08 16:48:21--
Dann sollte Dir warnings aber eine Warnung ausgeben...

Warum sollte man keine Arrays verwenden und statt dessen lieber skalare? Sehe selbst da keinen Vor-/Nachteil.


Die Zahlen kannst Du ja durchaus in dem Array speichern. Aber bei dem Zugriff auf ein einzelnes Element musst Du das "@" in "$" ändern. Siehe mein vorheriger Post.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten



View all threads created 2008-09-08 13:45.