Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^5: Rename unreliable on Windows

by tobyink (Abbot)
on Apr 04, 2012 at 12:06 UTC ( #963431=note: print w/ replies, xml ) Need Help??


in reply to Re^4: Rename unreliable on Windows
in thread Rename unreliable on Windows

is there an easy workaround (apart from disabling the backup sw)?

You could just keep trying to rename it...

1 until rename $file1, $file2;

Of course, if a file can genuinely never be renamed, this will cause your script to keep trying forever. Better to limit to a finite number of attempts at renaming.

my $attempts; while (not rename $file1, $file2) { $attempts++; die "Could not rename file: $!" if $attempts > 7; sleep $attempts; }
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'


Comment on Re^5: Rename unreliable on Windows
Select or Download Code
Re^6: Rename unreliable on Windows
by MidLifeXis (Monsignor) on Apr 04, 2012 at 12:48 UTC

    You could also throw it into a queue of items "to deal with later".

    --MidLifeXis

Re^6: Rename unreliable on Windows
by elef (Friar) on Apr 04, 2012 at 16:22 UTC
    Thanks. Hoping that copying is more robust than renaming, I tried this:
    unlink "rename2.txt" or die "Can't delete file: $!"; copy ("rename1.txt", "rename2.txt") or die "Can't copy file: $!"; unlink "rename1.txt" or die "Can't delete file: $!";

    Errors became less frequent, but they're still there. I'll try your suggestion. I really like the idea of sleeping increasing intervals between attempts, too.

    -------------------
    Edit: did the test, and the solution works. I also added some reporting to see how many extra attempts are needed for the renamings to succeed. The second attempt was sufficient every time, and it was needed ~50 times before the script got to 10000 loops. I'll implement this with 5 attempts max (just in case the backup sw spends more time on larger files) and forget about the issue. Thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://963431]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2015-07-07 02:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (86 votes), past polls