Thread Verzeichnis rekursiv auslesen und in Datenbank schreiben (39 answers)
Opened by Anton at 2012-05-15 08:38

GwenDragon
 2012-05-25 12:58
#158595 #158595
User since
2005-01-17
14850 Artikel
Admin1
[Homepage]
user image
Ungetestet:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/perl

use strict;
use warnings;

$| = 1;

use File::Find;
use File::Spec;
use Text::CSV;

# Verzeichnis von Kommandozeile holen

my $verzeichnis = shift(@ARGV)
    || 'C:\Users\Student\Desktop\Dropbox\Dropbox\AZ Darmstadt';
my $csv_name = shift(@ARGV) || 'C:\Users\Student\Desktop\dir.csv';

# Array für die gefundenen Dateien
my @dateien;

my $id = 0;
my $parent;
my %ids;

sub wanted {
    if ( $_ ne '..' ) {
        $ids{$File::Find::name} = $id;
        $parent = $File::Find::dir;

        push @dateien,
            {
            id       => $id++,
            fullname => $File::Find::name,
            name     => $_,
            parent   => $parent,
            parentid => $ids{$parent},
            size     => ( stat($File::Find::name) )[7],
            mtime    => ( stat($File::Find::name) )[9]
            };
    }
}

# Dateien einlesen
find( \&wanted, File::Spec->rel2abs($verzeichnis) );

my $csv = Text::CSV->new( { eol => $/ } );
open( my $cvsfh, '>', $csv_name ) or die("ERROR open $csv_name $!\n");
print $cvsfh "#fullname,name,size,id,pid,mtime\n";

for my $datei (@dateien) {
    $csv->print(
        $cvsfh,
        [   $datei->{fullname}, $datei->{name},     $datei->{size},
            $datei->{id},       $datei->{parentid}, $datei->{mtime}
        ]
    );
}
close( $cvsfh ) or die("ERROR close $csv_name $!\n");

Last edited: 2012-05-25 12:59:33 +0200 (CEST)

View full thread Verzeichnis rekursiv auslesen und in Datenbank schreiben