Script: Bilder verschieben nach Anpassung des Bilderpfades

Hilfreiche Tools, Scripte und Code-Schnippsel von BayWotch Nutzern für BayWotch Nutzer
Antworten
Mischa
Beiträge: 801
Registriert: 04.01.2004, 07:28
Wohnort: Köln

Script: Bilder verschieben nach Anpassung des Bilderpfades

Beitrag von Mischa »

Aufgabe:

Verschieben der Bilder aus dem Verzeichnissen mit der Struktur:
c:\Programme\Baywotch3\pics\[start_jjjj]\[start_mm]\[start_tt]\[verkaeufer]\[nummer]\

nach:
c:\Programme\Baywotch3\pics\[start_jjjj]\[start_mm]\[start_tt]\


Einschränkung:

das programm funktioniert nur für den spezialfall, wenn die weiter unten liegenden ebenen weggelassen werden (Bei mir [verkaeufer]\[nummer]) und die bilder aus einer tieferen ebene in eine übergeordnete ebene verschoben werden sollen. für andersartige umstrukturierungen ist das programm nicht geeignet.

das ganze ist viel gespickt mit "System.out.println" damit man sieht, was passiert.

interessant sind hier für die eigene anpassung die variablen am anfang.

Development-Tool:
java mit der IDE Eclipse ( http://www.eclipse.org )

Code: Alles auswählen


import java.io.*;

public class BayWotchTools{
	
	  public static void main(String[] args){
	  	try {
			checkDir(new File("C:\\Programme\\baywotch3\\pics"),"",0,"");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	  static void checkDir(File file, String indentString, int indentIndex, String lastPath) throws IOException {
	  	
	  	int IndentIndex_deleteDirsDeeper = 3;
	  	int IndentIndex_getLastPath = 3;
	  	int IndentIndex_FilesNoShow = 4;
	  	int IndentIndex_moveFilesIndex = 6;
	  	
	  	// Zeichen zum anzeigen der Tiefe.
  	  	String indentStringAdd = "----";
 	  	
 	  	if( !(indentIndex == IndentIndex_FilesNoShow && !file.isDirectory()) ){
 	  		// Datei ausgeben --> außer die schon kopierten dateien auf der Index-Ebene IndentIndex_FilesNoShow.
 	  		System.out.println(indentString + "[" + indentIndex + "] " + file.getName());
 	  	}
 	  	
	    if( indentIndex == IndentIndex_getLastPath ){
	    	// übergeordneten Pfad zum abspeichern merken.
	    	lastPath = file.getPath();
	    }
	    
	    
	    if( file.isDirectory() ) {
	      // Files im Ordner analysieren.
	    	
	      File[] files = file.listFiles();
	      
	      System.out.println( indentString.replaceAll("-","*") + "[" + indentIndex + "] = Files: " + files.length );
	      
	      for (int i = 0; i < files.length; i++){
	        checkDir(files[i],indentString + indentStringAdd,indentIndex+1,lastPath);
	      }
	      System.out.println( indentString.replaceAll("-","=") + "[" + indentIndex + "] " + file.getName() );
	      
	      // die leeren ordner nach verschieben der dateien löschen.
	      
	      if( indentIndex > IndentIndex_deleteDirsDeeper ){
	      	System.out.println( indentString.replaceAll("-","+") + "[" + indentIndex + "] " + file.getName() + " delete" );
	      	file.delete();
	      }
	    } else {
	    	
	    	// Nur dateien der untersten ebene verschieben / Löschen.
	    	if( indentIndex == IndentIndex_moveFilesIndex ){
	    		
	    		File newFileName = new File( lastPath,file.getName() );
	    		
	    		System.out.println( indentString + "> copy   to " + newFileName );
	    		
	    		// Doppelt abgespeicherte Bilder treten bei namensänderung des verkäufers auf 
	    		// wenn Verkäufername im Pfad ist
	    		if( newFileName.exists() ){
	    			file.delete();
	    			System.out.println( indentString + "> double exists. Deleted File " + file );
	    		} else {
	    			// renameTo = verschieben der datei
	    			file.renameTo( newFileName );
	    			System.out.println( indentString + "> copied to " + newFileName );
	    		}
	    	}
	    }
	    
	  }
	}
Antworten