Doppelte Dateinamen suchen

Hallo

Dies hier habe ich nicht verstanden,

Die Ausgabe (jetzt Dateiname /Verzeichnis)
kann man anpassen, in dem man in der Funktion
sub ZeigeDoppelteDateien herumschreibt.

wo soll ich was einsetzen ??

Ganz einfach, Du schreibst mir,
wie die Ausgabe genau aussehen soll,
ich ändere die betreffende Zeile in der
Funktion und hänge sie in den nächsten
Beitrag rein.

Der andere Punkt ist : wenn ich die Datei getdube.pl
unmittelbar starte, dann wird gesucht usw. und am Schluss
schließt sie wieder.

Das Problem ist, dass Windows(!) die DOS-Box
wieder schliesst, in der du das Programm gestartet
hast. Das kannst Du wie folgt „umschiffen“.
Du schreibst eine „run.bat“-Datei mit
folgendem Inhalt (Pfad anpassen):

cmd /k c:\perl\bin\perl getdup.pl c:\

bzw. schreibst eben alles in die run.bat
rein, was gemacht werden soll.

gehe ich über DOS und starte, dann erhalte ich die Ergebnisse
im DOS_Fenster, schaffe es jedoch nicht sie z.B. in eine *.txt
Datei zu überführen. Was muss ich machen, dass ich die Ausgabe
der Ergebnisse noch hinbekomme ?

Einfach die Ausgabe in eine Datei umlenken:

 perl getdupe.pl \> dateiliste.txt

Ist richtig, dass das Script nicht partitionsübergreifend
läuft, also D: wird in dei Suche nicht mit einbezogen,ja ?

dazu brauchst Du zwei Aufrufe:

 perl getdupe.pl \> dateiliste.txt
 perl getdupe.pl \>\> dateiliste.txt

d.h., die
Zweite Zeile hängt die Ausgabe (>&gt:wink: an die Datei
an, ohne sie (&gt:wink: neu zu erstellen.

Andererseits, ersetze doch mal den ersten
Block bei main durch Folgendes:

 main:
 foreach my $arg (@ARGV) {
 chdir $arg;
 Workproc();
 }
 exit(0);

Jetzt geht

 perl getdupe.pl c:\ d:\ \> dateien.txt

Wie soll die endgültige Ausgabe aussehen? Ich programmiere
sowieso gerade ein wenig perl, da kann ich das
gleich mit ändern.

Grüße

CMБ

1 Like

das funktioniert

Perfekt Semjon,

funktioniert einwandfrei mit dem Austausch der „main“ sowie auch die *.bat !!

Die Ausgabe wäre am optimalsten, wenn sie

  1. nach Dateiendungen sortiert wäre
  2. nur die Dateinamen mit ihren Endungen, jedoch ohne Pfad
  3. linksbündig zeilenweise untereinander

Ich denke, dass dann die Übersichtlichkeit am besten gewahrt ist, da doch wider Erwarten irre viele Doppeleintragungen durch z.B. einzelne Programme auftauchen.

Zwei Anmerkungen habe ich noch (wenn Du sowieso Lust zum Programmieren hast)
Lassen sich auch z.B. einzelne Ordner nebst deren Unterordner in der Suche ausschließen ? Interessant wäre das z.B. für c:/Dokumente und Einstellungen/ sowie für c:/Programme/Adobe/Acrobat/

Und als 2. wäre natürlich interessant, nur nach doppelten Dateien mit bestimmten Endungen zu suchen z.B. alle *.doc und *.xls

Auf jeden Fall gibt´s schon mal ein Sternchen … klasse Sache, was man mit wenigen (für mich als Laien zwar völlig undurchsichtigen) Begriffen so alles aus der Kiste zaubern kann.

Vielen Dank + sonnige Grüße
jwd

Hallo jwd,

am Wochendende war ich faul, aber jetzt
gehts weiter. Danke nochmal, dass Du ein
„dringend benötigtes“ real-world-Problem
lieferst, wodurch die Perl-Lernerei nicht
langweilig wird.
(Vielleicht kann ja auch ein Perl-Verständiger
einige meiner nono’s korrigieren :wink:

Also, die Ausgabe

  1. nach Dateiendungen sortiert wäre
  2. nur die Dateinamen mit ihren Endungen, jedoch ohne Pfad
  3. linksbündig zeilenweise untereinander

ist jetzt so gemacht. Die Ausgabe wird komplett
in der Funktion ZeigeDoppelteDateien ab-
gehandelt.

Ich denke, dass dann die Übersichtlichkeit am besten gewahrt
ist, da doch wider Erwarten irre viele Doppeleintragungen
durch z.B. einzelne Programme auftauchen.

OK, ich habe jetzt noch eine „Eigenmächtigkeit“
drin, hinter jedem Dateinamen erscheinen ‚.‘-Punkte
in der Anzahl der vorhandenen Dateien dieses Namens.
Das kannst Du leicht entfernen in obiger Funktion.

Lassen sich auch z.B. einzelne Ordner nebst deren Unterordner
in der Suche ausschließen ? Interessant wäre das z.B. für
c:/Dokumente und Einstellungen/ sowie für
c:/Programme/Adobe/Acrobat/

Das würde das Programm kompliziert machen, daher
hatte ich _-x „exclusion“ zwar angefangen, aber erstmal
wieder rausgeschmissen. Vielleicht denke ich heute
nochmal darüber nach.

Und als 2. wäre natürlich interessant, nur nach
doppelten Dateien mit bestimmten Endungen zu suchen
z.B. alle *.doc und *.xls

Das ist relativ leicht zu realisieren, daher drin.

Die (ad hoc) Bedienung ist jetzt ertmal wie folgt:

 perl getdupe.pl c:\temp d:\temp
  • suche alle doppelten Dateien in diesen Verzeichnissen

    perl getdupe.pl -e .doc c:\temp d:\temp c:\temp

  • suche alle doppelten „.doc“ Dateien in diesen Verzeichnissen

    perl getdupe.pl -e „.doc .xls“ c:\temp d:\temp

  • suche alle doppelten .doc und .xls Dateien,

    perl getdupe.pl -e „.doc .xls .dat .exe“ c:\temp d:\temp

  • die Mehrfach-Angabe von -e muss in „qotes“ gesetzt werden

    perl getdupe.pl c:\temp -e .doc

  • Fehler(!), -e muss immer vorne stehen

Hier kommt es:

# ----------- 8[0] cmp lc $b-\>[0]} @$rTable); # by name
 @$rTable = sort ({lc $a-\>[1] cmp lc $b-\>[1]} @arr); # by ext
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

 sub SucheDateien # Achtung: rekursiv
{ 
 my ($rTable, $rExtList) = @\_;
 my @dateien = LeseVerzeichnis();
 
 #chomp(my $path=`pwd`) ; # WIN32/UNIX: use this w/Unix
 chomp(my $path=Win32::GetCwd()); # WIN32/UNIX: use this w/Win32

 my $count = @$rExtList;
 foreach my $datei (@dateien) {
 if (-f $datei) {
 my @parts = split (/\./, $datei); # extract ".ext" from name
 if( DateiExtOk($rExtList, $parts[$#parts]) ) {
 push(@$rTable, [$datei, $parts[$#parts]]); ; # record [a,b,c]
 }
 }
 if (-d $datei and $datei ne "." and $datei ne "..") {
 chdir $datei;
 SucheDateien($rTable, $rExtList); # rekursiv suchen
 chdir ".."; 
 }
 }
}
# - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - #
 
 sub ZeigeDoppelteDateien
{
 my $rTable = @\_[0];
 for (my $i=0, my $count=@$rTable; $i[0] eq lc $$rTable[$i+1]-\>[0]) {
 if ((lc $$rTable[$i-1]-\>[0] ne lc $$rTable[$i]-\>[0])) {
 print "\n", $$rTable[$i]-\>[0], " .." ; 
 }
 else { 
 print "."; 
 }
 }
 } 
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

Grüße

CMБ_

Hi Semjon,

dank` Dir, aber ich bin die kommenden 2 Tage unterwegs und werde mir das wohl am Mittwoch anschaun können

bis dahin
liebe Grüße
jwd

funktioniert perfekt
Hallo Semjon,

das läuft einwandfrei !

Die Ausgabe mir den Punkten (als Symbol für die Anzahl der Doppelten) ist klasse, da es dezent und nicht so verwirrend wirkt.

Es ist kompliziert bzw. aufwendig, einzelne Ordner und deren Unterordner bei der Suche auszuklammern. Möglicherweise ist es weit weniger aufwendig, einzelne Dateiendungen auszuklammern. Ich denke da z.b an *.url und *.htm. Vielleicht gibt es da ja so etwas wie einen „Negativbefehl“ ??
Nicht wirklich wichtig, dennoch die Fragen: derzeit sortiert die Ausgabeliste Laufwerk c: alle Dateiendungen zusamengefasst und anschließend das geleiche bei Laufwerk d:. Lassen sich auch die Dateiendungen ALLER Laufwerke zusammenfassen, also alle z.b. *.doc untereinander (egal ob sie auf C: und/oder D: gefunden werden) ?

Danke + viele Grüße
jwd

Hallo jwd

Es ist kompliziert bzw. aufwendig, einzelne Ordner und deren
Unterordner bei der Suche auszuklammern. Möglicherweise ist es
weit weniger aufwendig, einzelne Dateiendungen auszuklammern.
Ich denke da z.b an *.url und *.htm. Vielleicht gibt es da ja
so etwas wie einen „Negativbefehl“ ??

OK, das war relativ einfach, jetzt geht folgendes:

  • suche nur nach Dateien mit Typ ‚ext1‘ und ‚ext2‘:

    getdupe.pl -i „ext1 ext2“ dir1 dir2 dir3

  • suche nach Dateien ausser mit Typ ‚ext2‘:

    getdupe.pl -x ext2 dir1 dir2 dir3

und dann hab ich festgestellt, dass man in
Perl die Prüfung ja mit einer „regular expression“
machen kann (http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck).
Und diese reicht das Programm quasi „durch“,
wenn man sie angibt. Was heisst das nun?

Man kann z.B. schreiben:

  • suche Dateien, deren Endung mit „H“ oder „h“
    anfängt und dann noch beliebige andere Zeichen hat:

    getdupe.pl -i „^[Hh]+“ dir1 dir2

  • suche Dateien, die eine Zahl im Typ haben

    getdupe.pl -i „[0-9]“ dir1 dir2

  • suche Dateien, deren Typ haben mit einer zahl aufhört

    getdupe.pl -i „[0-9]$“ dir1 dir2

usw.

Nicht wirklich wichtig, dennoch die Fragen: derzeit sortiert
die Ausgabeliste Laufwerk c: alle Dateiendungen zusamengefasst
und anschließend das geleiche bei Laufwerk d:. Lassen sich
auch die Dateiendungen ALLER Laufwerke zusammenfassen, also
alle z.b. *.doc untereinander (egal ob sie auf C: und/oder D:
gefunden werden) ?

Ist gemacht. Dazu musste nur die Dateiliste aus der
Verzeichnis-Schleife rausgenommen werden.

Wahrscheinlich könnte man „in richtigem Perl“
das programm etwa auf die Hälfte verkürzt
schreiben :wink:

Auf ein Neues:

 - - 8@table
 SucheDateien(\@table, \@extList, $extopt);
 }
 SortiereDateinamen(\@table); # do some final sorting
 ZeigeDoppelteDateien(\@table); # and dump the remaining stuff

exit(0);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

 sub DateiExtOk # find extensions by direct regex evaluation ($ext)
{
 my ($rExtList, $actext, $extopt) = @\_;
 return 1 if (! scalar @$rExtList); # no extList? always ok.
 foreach my $pat (@$rExtList) { 
 if($extopt eq "+") { return 1 if ($actext=~/$pat/); } # if ext == pat
 if($extopt eq "-") { return 1 if !($actext=~/$pat/); } # if ext != pat
 }
 return 0;
}
# - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - #

 sub LeseKommandozeile
{
 my ($rDirList, $rExtList, $rExtOpt) = @\_;
 my %args=(); 
 getopts("i:x:e:", \%args); # read command line args
 @$rDirList = sort @ARGV; # keep remaining arguments
 foreach (%args) { s/^\s+//; } # remove leading spaces
 if ($args{e}) {
 print " \"-e\" deprecated, use -i (include) oder -x (exclude)\n" ;
 exit(1);
 }
 if ($args{i} && $args{x}) {
 print " can't use \"-x\" and \"-i\" together (semantic error)\n";
 exit(1);
 }
 if ( $args{i} ) {
 @$rExtList = split(/\s+/,$args{i}); $$rExtOpt = "+";
 }
 elsif ($args{x}) {
 @$rExtList = split(/\s+/,$args{x}); $$rExtOpt = "-";
 }
 else { 
 @$rExtList = (); $$rExtOpt = "."; 
 }
 foreach (@$rExtList) { s/^\.//; } # remove leading .dot
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

 sub LeseVerzeichnis
{
 opendir(MYDIR, "."); 
 my @files = readdir(MYDIR);
 closedir(MYDIR);
 return @files;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

 sub SortiereDateinamen
{ 
 my $rTable = @\_[0];
 my @arr = sort ({lc $a-\>[0] cmp lc $b-\>[0]} @$rTable); # by name
 @$rTable = sort ({lc $a-\>[1] cmp lc $b-\>[1]} @arr); # by ext
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

 sub SucheDateien # Achtung: rekursiv
{ 
 my ($rTable, $rExtList, $extpat) = @\_;
 my @dateien = LeseVerzeichnis();
 my $count = @$rExtList;
 foreach my $datei (@dateien) {
 if (-f $datei) {
 my @parts = split (/\./, $datei); # extract ".ext" from name
 if( DateiExtOk($rExtList, $parts[$#parts], $extpat) ) {
 push(@$rTable, [$datei, $parts[$#parts]]); ; # record [a,b,c]
 }
 }
 if (-d $datei and $datei ne "." and $datei ne "..") {
 chdir $datei;
 SucheDateien($rTable, $rExtList, $extpat); # rekursiv suchen
 chdir ".."; 
 }
 }
}
# - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - #

 sub ZeigeDoppelteDateien
{
 my $rTable = @\_[0];
 my ($i, $count, $found);
 for ($i=0,$found=0,$count=@$rTable; $i[0] eq lc $$rTable[$i+1]-\>[0]) {
 if ((lc $$rTable[$i-1]-\>[0] ne lc $$rTable[$i]-\>[0])) {
 print "\n", $$rTable[$i]-\>[0], " .." ; $found++;
 }
 else { 
 print "."; 
 }
 }
 } 
 print "\n",$found,"/", $count, " dateien\n";
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

Grüße

CMБ

1 Like

funktioniert, aber …
Hallo Semjon,

Dein Programm funktioniert sehr gut.

Mit Folgendem komme ich jedoch nicht klar :

OK, das war relativ einfach, jetzt geht folgendes:

  • suche nur nach Dateien mit Typ ‚ext1‘ und ‚ext2‘:

getdupe.pl -i „ext1 ext2“ dir1 dir2 dir3

dies funktioniert auch.
Wenn ich jedoch mehrere Endungen ausschließen möchte, dachte ich, könnte ich analog das „-i“ gegen „-x“ einfach ersetzen … dachte ich jedoch nur, denn es funktioniert nicht.
Warum ??

Besten Dank für Deine Mühe und wenn Du noch Lust auf eine weitere Spezifikation in diesem Beispiel hast, dann lass es mich wissen. Mich würde es jedenfalls freuen !

Sonnige Grüße
jwd

Hallo jwd,

Wenn ich jedoch mehrere Endungen ausschließen möchte, dachte
ich, könnte ich analog das „-i“ gegen „-x“ einfach ersetzen
… dachte ich jedoch nur, denn es funktioniert nicht.
Warum ??

Ehrlich gesagt, weil ich Mist reingeschrieben
habe. Nicht richtig nachgedacht, nicht richtig
geprüft usw. -

Jetzt habe ich mir ein wenig Zeit genommen,
um das ganze zu durchdringen und zu testen.
Soweit scheint es zu gehen. Ausserdem musste
ich noch dafür sorgen, dass blanke Namen
wie z.B. -i/-x „htm“ intern umgewandelt werden
in die korrekte reguläre Expression „^htm$“,
sprich: Start,htm,Ende usw.,
weil htm als reguläre Expression auch
auf html passen würde. Aber das nur
am Rande. Jetzt findet „htm“ auch „htm“.

- - - - - 8[0] cmp lc $b-\>[0]} @$rTable); # by name
 @$rTable = sort ({lc $a-\>[1] cmp lc $b-\>[1]} @arr); # by ext
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

 sub SucheDateien # Achtung: rekursiv
{ 
 my ($rTable, $rExtList, $extpat) = @\_;
 my @dateien = LeseVerzeichnis();
 my $count = @$rExtList;
 foreach my $datei (@dateien) {
 if (-f $datei) {
 my @parts = split (/\./, $datei); # extract ".ext" from name
 if( DateiExtOk($rExtList, $parts[$#parts], $extpat) ) {
 push(@$rTable, [$datei, $parts[$#parts]]); ; # record [a,b,c]
 }
 }
 if (-d $datei and $datei ne "." and $datei ne "..") {
 chdir $datei;
 SucheDateien($rTable, $rExtList, $extpat); # rekursiv suchen
 chdir ".."; 
 }
 }
}
# - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - #
 
 sub ZeigeDoppelteDateien
{
 my $rTable = @\_[0];
 my ($i, $count, $found);
 for ($i=0,$found=0,$count=@$rTable; $i[0] eq lc $$rTable[$i+1]-\>[0]) {
 if ((lc $$rTable[$i-1]-\>[0] ne lc $$rTable[$i]-\>[0])) {
 print "\n", $$rTable[$i]-\>[0], " .." ; $found++;
 }
 else { 
 print "."; 
 }
 }
 } 
 print "\n",$found,"/", $count, " dateien\n";
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

Grüße

CMb

funktioniert schon besser
Hi Semjon,

es funktioniert besser, jedoch noch nicht ganz sauber

ich suche mit :
cmd /k c:\perl\bin\perl getdupe.pl -x „url html“ c:\ d:\ > dateienOHNEendungen.txt

dann steht in der ersten zeile des Ergebnisausdruckes :
-^url$, -^html$,

ich hatte Dich derart verstanden, dass gleichsam auch *.htm unter *.html subsumiert werden, also ebenfalls in diesem Fall ausgeschlossen werden. Dem ist jedoch nicht so; *.htm werden weiter aufgelistet.
Vielleicht habe Dich aber auch missverstanden.

Darüber hinaus zeigen sich immer wieder trotz Ausschluss diese drei *.url .
MAPXPRES.URL …
MIWWW.URL …
WEBPAGE.URL …
Ist nix Wchtiges, aber dennoch (zumindest für mich) merkwürdig.

Viele Grüße
jwd

Hallo jwd,

es funktioniert besser, jedoch noch nicht ganz sauber

ich suche mit :
cmd /k c:\perl\bin\perl getdupe.pl -x „url html“ c:\ d:\ >
dateienOHNEendungen.txt

dann steht in der ersten zeile des Ergebnisausdruckes :
-^url$, -^html$,

ich hatte Dich derart verstanden, dass gleichsam auch *.htm
unter *.html subsumiert werden, also ebenfalls in diesem Fall
ausgeschlossen werden. Dem ist jedoch nicht so; *.htm werden
weiter aufgelistet.

Nein, jetzt ist es so, dass html auch nur html findet. Du
müsstest dann explizit schreiben, was Du suchst, also
z.b. getdupe.pl -x „url URL htm html“ …

Darüber hinaus zeigen sich immer wieder trotz Ausschluss diese
drei *.url .
MAPXPRES.URL …
MIWWW.URL …
WEBPAGE.URL …
Ist nix Wchtiges, aber dennoch (zumindest für mich)
merkwürdig.

Unter Unix sind URL und url unterschiedliche Dinge,
daher wird das nicht gleichgesetzt.

Die „regular expression“ für den Ausschluss
der genannten Dateien würde etwa so aussehen
getdupe.pl -x „(URL|url|HTM.*|htm.*)“ …

Grüße

CMБ

Hallo Semjon,

ok, jetzt verstehe ich es

Danke + sonnige Grüße
jwd

Hallo jwd,

falls Du das Programm nochmal
brauchst, kannst Du jetzt eine
(„stolz geschwellte Brust“) Version
mit 30 Perl-Zeilen verwenden, die
korrekter und schneller arbeitet
und mehr Optionen hat.

Was Perl möglich macht, ist schon krass.
Zum Glück hast Du mich zum Dranbleiben
animiert :wink:

Vielleicht kannst Du’s ja gebrauchen, wenn
nicht, werde ich Dich nicht mehr mit neuen
Versionen zuschütten :wink:

Jetzt nur noch eine „Regular Expression“ pro -i/-x Schalter,
aber dafür ein Schalter -d (Doppelte Dateien anzeigen oder
nicht).
alle Dateien anzeigen

 $\> perl fdupes.pl c:\temp

alle .bak Dateien anzeigen

 $\> perl fdupes.pl -i bak c:\temp

alle mehrfachen Dateien (-d) anzeigen

 $\> perl fdupes.pl -d c:\temp

nur alle .xls und .doc Dateien anzeigen

 $\> perl fdupes.pl -i "(xls|doc)" c:\temp

alle doppelten xls und doc Dateien anzeigen

 $\> perl fdupes.pl -d -i "(xls|doc)"
oder: perl fdupes.pl -di "(xls|doc)" c:\temp

alle dateien ausser htm[l] und url anzeigen

 $\> perl fdupes.pl -x "(htm|url)" c:\temp

dasselbe aber egal ob gross oder klein

 $\> perl fdupes.pl -x "(htm|HTM|url|URL)" c:\temp

davon die Doppelten anzeigen

 $\> perl fdupes.pl -dx "(htm|HTM|url|URL)" c:\temp

usw.

Hier kommts:

#!/usr/bin/perl -w
use strict;
use File::Find;
use Getopt::Std;

my (%args, @ftab, @fn); 
getopts("i:x:d", \%args);
find(\&processtree, @ARGV) if (scalar @ARGV);
if (defined $args{i}) { @fn = grep {$\_-\>[0] =~ /$args{i}/} @ftab; }
elsif (defined $args{x}) { @fn = grep {$\_-\>[0] !~ /$args{x}/} @ftab; }
else { @fn = @ftab; }

@ftab = sort {lc $a-\>[1] cmp lc $b-\>[1]} @fn;
@fn = sort {lc $a-\>[0] cmp lc $b-\>[0]} @ftab;
for (my $i=0; $i[1]."\n"; };
}
exit;

sub dblcheck { # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 my $a=defined($\_[0])?$\_[0][1]:"";
 my $c=defined($\_[2])?$\_[2][1]:"";
 my $b=$\_[1][1];
 if ($b eq $c) { print $b.' ' if ($a ne $b); print '.'; }
 else { print ".\n" if ($a eq $b); }
}

sub processtree { # - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 if (-f $File::Find::name) {
 my @parts = split (/\./, $\_);
 push (@ftab, [$parts[$#parts], $\_]) if (/\./);
 }
}

Grüße

CMБ

Cool, Semjon,

doch komme ich leider erst morgen dazu, es auszuprobieren; bin aber schon ganz gespannt.
Keine Angst, Du schüttest mich nicht zu, kannste mir also ruhig weiter schicken. Denn ich kann das gute Gefühl nachvollziehen, wenn man sich an einem Thema konstruktiv festgebissen hat; dann erlebe ich so ein geiles Flow-Gefühl. Also wenn Du noch Lust auf eine weitere Spezifikation in diesem Beispiel hast, dann lass es mich wissen. Mich würde es jedenfalls freuen ! (hatte ich ja weiter oben schon erwähnt).

Auf jeden Fall dank´ ich Dir

Herzliche Grüße
jwd

funktioniert nicht
Hi Semjon,

so, jetzt war ich paar Tage nicht da und bin gerade erst dazu gekommen, Dein neues Programm auszuprobieren.
Bei mir läuft es jedoch nur mit folgender Fehlermeldung:
„can´t opendir :Invalid argument at getdupe.pl line 8“ dto. für D:/
und die Ergebnisdatei *.txt bringt jede Menge Dateinamen, manche doppelt und ohne die schöne Angabe mit der Anzhal Punkte.

Also mir reicht die Vorgängerversion, auch wenn Sie länger ist und dem Programmiererherzen vielleicht nicht so zusagt.

Dank´ Dir
jwd

Hallo

so, jetzt war ich paar Tage nicht da und bin gerade erst dazu
gekommen, Dein neues Programm auszuprobieren.
Bei mir läuft es jedoch nur mit folgender Fehlermeldung:
„can´t opendir :Invalid
argument at getdupe.pl line 8“ dto. für D:/
und die Ergebnisdatei *.txt bringt jede Menge Dateinamen,
manche doppelt und ohne die schöne Angabe mit der Anzhal
Punkte.

OK, wie hast Du’s denn aufgerufen? (mit welchen
Argumenten, damit ich das mal testen kann).

Grüße

CMБ

Hi Semjon,

die getdupe habe ich mit deinem neuen Inhalt bestückt und aufgerufen (wie immer und unverändert) mit der run.bat :
cmd /k c:\perl\bin\perl getdupe.pl c:\ d:\ > dateien.txt

Grüße
jwd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]