Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PERL] Folder inkl. Subfolder kopieren

Empfohlene Antworten

Veröffentlicht

moin leute, ich hab nen problem mit perl !

ich brauch ein script das mir folder mit allen(files/subfolder) inhalten kopiert.

und zwar breuchte ich nen ganz einfachen source code, wo ich eine "source folder" angeben und eine "destination folder"...

bisher habe ich

#!/usr/bin/perl

use File::Copy ;

# Quell und Zielverzeichnis

my $base_dir = "C:/base" ;

my $save_dir = "C:/save" ;

# Verz. zum lesen oeffnen

opendir (BASE, $base_dir) || die "Kann Verz. nicht lesen: ";

# Verzeichnis einlesen (./.. aussortieren und checken ob datei)

my @dir =  readdir("BASE");

closedir (BASE);

# Alle eingelesenen Dateien durchgehen

foreach my $file (@dir) {

# Und kopieren

copy("$base_dir/$file", "$save_dir/$file");

}
hierbei werden aber nur die dateien die sich direkt und dem ordner "base" befinden kopiert. die subfolders werden ignoriert. ich denke mal das ganze sollte irgendwie mit
File::Find und File::Copy
möglich sein. Nur ich weiß nicht wie , da ich erst seid heute mit Perl arbeite. WICHTIG IST!! das ich nicht das modul
 File::NCopy

benutzen kann, da das ganze auf mehrern rechner laufen soll, auf dennen das cpan plugin nicht installiert ist.

hoffe auf hilfe !

vorab danke !

hab selber ne lösung gefunden ! für alle die es interessiert:


#!/usr/bin/perl

use strict;

use File::Copy;


#

#  main program

#

my @list = recursive_filesearch('C:\ICI_FileScanner\base');

foreach my $i (@list) {

    my $target = filecopy($i, 'C:\ICI_FileScanner\base', 'C:\ICI_FileScanner\save');

    print "copied $target\n";

}

exit(0);


#/////////////////////////////////////

#  library

#/////////////////////////////////////


sub recursive_filesearch {

    my $startFolder = shift;

    my @folderList = ($startFolder);

    my @result = ();

    my ($currentFolder, $i, $fullPath);


    #

    #  recursive search simulated with list.

    #

    while( @folderList ) {    

        #

        #  draw first element from list.

        #

        $currentFolder = shift(@folderList);               


        #

        #  parse folder with opendir/readdir/closedir loop.

        #

        opendir(DIR, $currentFolder) 

            or die "cannot open folder $currentFolder: $!";

        while( $i = readdir(DIR) ) { 

            #

            #  tricky: ignore folders which will cause havoc to 

            #  a recursive search.

            #

            next if '.' eq $i;

            next if '..' eq $i;    


            #

            #  build full filename/foldername.

            #

            $fullPath = $currentFolder . '\\' . $i;


            #

            #  store folders for subfolder searches.

            #

            push(@folderList, $fullPath) if -d $fullPath;



            #

            #  store any file/folder in result.

            #

            push(@result, $fullPath);

        }

        closedir(DIR);        

    }   

    #

    #  return all found files/folders as list

    #

    return @result;

}


#

#  wrapper around File::Copy::copy. takes care of folders.

#

sub filecopy {

    my ($sourceFile, $fromFolder, $toFolder) = @_;

    my $targetFile;


    #

    #  abort if $sourceFile don't belong to $fromFolder 

    #

    if( 0 != index($sourceFile, $fromFolder) ) {

        die "$sourceFile outside of $fromFolder";

    }             

    my $i = length($fromFolder);

    $targetFile = $toFolder . substr($sourceFile, $i); 


    #

    #  assure existence of target folder

    #    

    mkdir($toFolder) unless -d $toFolder;


    if( -d $sourceFile ) {            

        #

        #  folders are not copied but created.

        #

        mkdir($targetFile);

    }

    else {                                    

        #

        #  files are copied via File::Copy::copy. 

        #

        copy($sourceFile, $targetFile);

    }

    return $targetFile;

}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.