[Batch/Bash] Kleines Batchscript

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Huaba, 4. Januar 2011 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 4. Januar 2011
    Kleines Batchscript

    Hallo,

    folgendes:

    ich möchte ein kleines batchscript, welches mir unter windows 7 bilder verschiebt. Beispiel:

    Ich hab die dateien baum.jpg, auto.jpg,... und so weiter. sind viele bilder

    jetz will ich, dass er mir jede datei in einen gleichnamigen ordner verschiebt. also:

    die datei baum.jpg soll nach /baum/baum.jpg wandern.
    die datei auto.jpg soll nach /auto/auto.jpg wandern.

    geht das?

    ansatz vll hier:
    Dateien automatisch in gleichnamige Ordner verschieben - Batch & Shell - administrator

    kann mir das wer umschreiben? ich hab NULL peil!

    danke, grüße
     
  2. 5. Januar 2011
    AW: Kleines Batchscript

    Eigentlich gibt es da den "Ich Suche Programmierer Thread" für, aber ich will mal eine Ausnahme machen. Ich habe dein Problem mit einem Python Skript gelöst. Lad dir Python 3.x runter, damit es funktioniert. Habe es getestet und alles läuft gut.

    Einfach Skript Starten, dann wirst aufgefordert den Ordnernamen einzugeben und der Rest geschieht automatisch.

    PHP:
    import os
    import shutil

    exts 
    = ( 'jpg' 'gif' 'png' 'jpeg' )

    path  input ( 'Geben Sie den Pfad des Ordners an: ' )
    if 
    os . path . exists ( path ):
        
    os . chdir ( path )
        
    files  os . listdir ( path )
        for 
    f in files :
            if 
    os . path . isfile ( f ):
                
    isimg  False
                
    for  ext in exts :
                    if 
    f . lower (). endswith ( ext ):
                        
    isimg  True
                        
    break
                if 
    isimg :
                    
    filename  f . split ( '.' )[ 0 ]
                    try:
                        
    os . mkdir ( filename )
                    
    except WindowsError :
                        
    pass
                    
    if  os . path . exists ( filename ):
                        
    shutil . move ( f filename  '/'  f )
    greez
     
  3. 5. Januar 2011
    AW: Kleines Batchscript

    @cable
    Ich kenne mich zwar nicht so wriklich mit Python aus, aber folgendes sieht nicht so besonders geschickt aus:
    Code:
    filename = f.split('.')[0]
    
    Wie ich das sehe, ist diese Zeile dazu da den Dateinamen vor der Extension zu bestimmen, dürfte aber z.b. bei "foto.27.05.2010.jpg" nicht mehr funktionieren, da f.split('.')[0] dann nur foto liefert oder sehe ich das falsch?
    In dem fall müsste man alle Teilstrings vor dem letzten Punkt wieder mit . konkatenieren um den vollen Dateinamen zu erhalten.
     
  4. 5. Januar 2011
    AW: Kleines Batchscript

    Ja, das stimmt. Ich weiß auch, dass es nicht super ist. Hatte nur keine große Lust das zu ändern. Diese Lösung wäre evtl sinnvoller:
    PHP:
    filename  f [ 0 : f . rfind ( '.' )]
    Also insg so:
    PHP:
    import os
    import shutil

    exts 
    = ( 'jpg' 'gif' 'png' 'jpeg' )

    path  input ( 'Geben Sie den Pfad des Ordners an: ' )
    if 
    os . path . exists ( path ):
        
    os . chdir ( path )
        
    files  os . listdir ( path )
        for 
    f in files :
            if 
    os . path . isfile ( f ):
                
    isimg  False
                
    for  ext in exts :
                    if 
    f . lower (). endswith ( ext ):
                        
    isimg  True
                        
    break
                if 
    isimg :
                    
    filename  f [ 0 : f . rfind ( '.' )]
                    try:
                        
    os . mkdir ( filename )
                    
    except WindowsError :
                        
    pass
                    
    if  os . path . exists ( filename ):
                        
    shutil . move ( f filename  '/'  f )  
     
  5. 5. Januar 2011
    AW: Kleines Batchscript

    PHP:
    ##############################
    # script erstellt von murdoc #
    ##############################

    <?php

    $path 
    readline_x ( 'Geben Sie den Pfad des Ordners an: ' );
    $done  0 ;

    if(!(
    $path  realpath ( $path )))
        exit(
    "Pfad nicht gefunden\n" );

    for(
    $iter  = new  DirectoryIterator ( $path );  $iter -> valid ();  $iter -> next ()) {
        if(!
    $iter -> isFile () || ! $iter -> isReadable ())
            continue;
            
        if(
    copy_image ( $iter -> getFilename (),  $path ) ===  true )
            ++
    $done ;
    }

    print 
    " $done  Bilder verschoben" ;

    // ----------------------------------------------


    function  readline_x ( $prompt  null )
    {
        if(
    function_exists ( 'readline' ))
            return 
    readline ( $prompt );
            
        if(
    $prompt  !==  null )
            print 
    $prompt ;
            
        return 
    trim ( fgets ( STDIN ));
    }


    function  copy_image ( $file $path )
    {
        static 
    $exts  = array( '.jpg' '.gif' '.png' '.jpeg' );
        
        if(!
    in_array ( $ext  strrchr ( $file '.' ),  $exts ))
            return 
    false ;
            
        
    $name  substr ( $file 0 , - strlen ( $ext ));
        
    $name  preg_replace ( '/[\\\\\/:\*\?<>|]+/' '' $name );
        
        if(empty(
    $name ))
            return 
    false // can not copy
            
        
    if(! is_dir ( $npath  " $path / $name " ))
            
    mkdir ( $npath 0777 );
        
        
    copy ( " $path / $file " " $npath / $file " );
        
    unlink ( " $path / $file " );
        
        return 
    true ;
    }
    einfach php installieren (oder die binarys irgendwo hinkloppen) und dann von dort aus ausführen
    ist jetzt nicht umbedingt hilfreich, aber für cable ganz interessant denk ich
     
  6. 5. Januar 2011
    AW: Kleines Batchscript

    Sollte ja auch kein Angriff gegen dich sein, wunderte mich nur, dass das vielleicht nicht die beste Lösung ist.
    Die Syntax von Python in dem Char-Array ist mal scharf
     
  7. 5. Januar 2011
    AW: Kleines Batchscript

    Ich will hier nicht in Offtopic ausbrechen, aber wenn dir das schon gefällt, dann solltest du dir mal Python genauer anschauen. Alleine die List Comprehensions sind so genial, dass man komplizierte Ausdrücke locker in eine Zeile packen kann.

    http://docs.python.org/tutorial/datastructures.html Unter List Comprehension schauen

    Zudem sind dann noch Lambda Ausdrücke ziemlich genial und insgesamt kann man sehr schnell ein Prototyp einer Applikation basteln.

    @Murdoc: Danke. Hatte auch überlegt es in PHP zu schreiben, aber Python favorisiere ich noch ein wenig mehr.

    greez
     
  8. 12. Januar 2011
    AW: Kleines Batchscript

    dumme frage.

    python installiert, dann speicher ich das ganze in eine textdatei.py und öffne es - es geht auf, ich kann nen pfad eingeben allerdigns kommt dnan irgend ne meldung und das dignens schließt sich ganz schnell wieder... pfad wäre G:\FOTOS\NEU

    wieso geht das nich!?
     
  9. 12. Januar 2011
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Kleines Batchscript

    versuch das php-script

    hier als exe (mit phc-win kompiliert):
    No File | www.xup.in
     
  10. 12. Januar 2011
    AW: Kleines Batchscript

    ging super mit php (ohne exe)

    danke! BW sind an alle raus!
     
  11. 12. Januar 2011
    AW: Kleines Batchscript

    Nun will ich aber wissen warum mein Skript nicht funktionierte.

    Gib bitte folgendes in die Konsole ein:
    Code:
    C:\Pfad\zu\Python\python.exe C:\Pfad\zur\Pythondatei\movefiles.py
    Natürlich beide Pfade anpassen. Der erste müsste so lauten:
    Code:
    C:\Python31\python.exe
    Leg am besten das Script auch in den Ordner und gib ein:
    Code:
    C:\Python31\python.exe C:\Python31\movefiles.py
    Ich hoffe, dass du auch >= Python 3.1 benutzt

    Wie gesagt, bei mir funtkioniert es ohne Probleme.

    greez

    //edit: Wenn ich es per Doppelklick ausführe, dann geht es nicht. Führe ich es über die Konsole aus, dann funzt es ohne Probs!
     
  12. 13. Januar 2011
    AW: Kleines Batchscript

    ja in der konsole geht es auch bei mir!

    wieso gehts so nicht?! komisch!

    dennoch vielen dank! is echt ne nette sprache das python hab mich bissl an deinem script gespielt
     
  13. 29. Mai 2011
    AW: Kleines Batchscript

    also, ich hol das nomal hoch.

    deine exe funktioniert NICHT. das script hier in ne blabla.php speichern und dann php installieren. in der konsole mit "php C:\PFAD\blabla.php" ausführen und es geht prima! eventuell in V2 noch ein fortschrittsbalken

    sonst super! würd ich direkt in Tutorials reinposten!

    grüße
     
  14. 29. Mai 2011
    AW: Kleines Batchscript

    Problem gelöst.

    Dicht.
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.