Batch rename files while keeping part of the name?
<p>Like the title suggests I want to batch rename files but keep the first 4 characters of the file name.</p>

<p>Trying to modify this open source <a href="http://code.google.com/p/batchfilerenametool/" rel="nofollow">batchfilerenametool</a> for personal use. Any suggestions?</p>

<p>I added the code that renames the file. Where it says <code>filename = filename + generatedSequence;</code> pretty sure that is where I need to add it, but what would specify just the first 4 characters of the file name?</p>

<pre><code>//this is affected by the RenameOption, if Rename has something then only we RENAME
if(cbxRename.isSelected() == true){
   fileName = Rename + generatedSequence;   //the fileName will change.
}
else {
   //if Rename has nothing, but the txtSequence has some Value, we take it to the naming too
   fileName = fileName + generatedSequence;
}
</code></pre>

<p>Below is the rename part of the code. </p>

<pre><code>private void renameFile(){

        boolean operationResult = false;
        boolean overallResult = true;
        int failCount = 0;

        /* the operation of this part is ensured by the chooseDirectory()
         * WE get the list of files in the directory
         * get the conditions set by users
         * and perform the file rename operation.
         */

        //Let's get all the information from user
        String[] fileList = directory.list();  //the list of files in the directory
        String Prefix = txtPrefix.getText();
        String Rename = txtRename.getText();
        String Suffix = txtSuffix.getText();
        String digits = (String) cboSequence.getSelectedItem();
        int StartingNum;
        String generatedSequence;
        File oldFile;

        //let's call the output frame
        if(cbxOutput.isSelected() &amp;&amp; OUTPUT_ON == false){
            buildOutput();
            OUTPUT_ON = true;
        }




        //display the list of files and readability of each file
        for(int i = 0; i &lt; fileList.length; i++){   
            oldFile = new File(directory.getPath()+"/"+ fileList[i]);
            String readability = fileList[i] +" - readable?: "+oldFile.canRead();
            System.out.println(readability);

            if(OUTPUT_ON)
                txaOutput.append("\n"+readability);
        }

        for(int i = 0; i &lt; fileList.length; i++){

            /* get the file extension that we need, and form a new name, 
             * we would check if the Ignore File Extension is selected
             */
            oldFile = new File(directory.getPath()+"/"+ fileList[i]);

            String fileExtension;

            if(cbxIgnoreExtension.isSelected() == true ){
                fileExtension = "";
            }
            else
                fileExtension = getFileExtension(fileList[i]);

            //this part get the original filename       
            String fileName = getFileName(fileList[i]);



            String inputInfo = "The input filename-&gt;"+ fileList[i] + "\nfile name-&gt;" + fileName + "\nextension-&gt;" + fileExtension;   
            System.out.println(inputInfo);

            if(OUTPUT_ON)
                txaOutput.append("\n"+inputInfo);



            /* generate sequence for the Name
             *if the digits selection is NONE, we ignore it
             */
            if(digits.equals("None") == true){
                generatedSequence = "";
            }
            else{
                StartingNum = Integer.parseInt(txtSequence.getText());
                generatedSequence = nameSequence(StartingNum + i, digits);
            }




            //this is affected by the RenameOption, if Rename has something then only we RENAME
            if(cbxRename.isSelected() == true){
                fileName = Rename + generatedSequence;   //the fileName will change.
            }
            else{
                //if Rename has nothing, but the txtSequence has some Value, we take it to the naming too
                fileName = fileName + generatedSequence;
            }


            //the New File Name
            String newFileName = Prefix + fileName + Suffix + fileExtension;
            String tentativeName = "new Filename will be -&gt;"+newFileName+"\n";
            System.out.println(tentativeName);

            if(OUTPUT_ON)
                txaOutput.append("\n"+tentativeName);




            // ! Perform the file rename, if the Experimental Mode is not selected
            if(cbxExperiment.isSelected() == false){

                operationResult = oldFile.renameTo(new File(directory.getPath()+"/"+newFileName));
                String renameResult = "\t*Rename successfully?: " + operationResult+"\n\n";
                System.out.println(renameResult);
                    if(operationResult == false)
                        failCount++;

                    if(OUTPUT_ON)
                        txaOutput.append("\n"+renameResult);

                //make up the overall result
                overallResult = (operationResult &amp;&amp; overallResult);
            }

        }

        if(cbxExperiment.isSelected() == false){
            System.out.println("Overall Result: "+overallResult);
            if(overallResult)
                JOptionPane.showMessageDialog(null, "All files renamed successfully!");
            else
                JOptionPane.showMessageDialog(null, "File renamed with "+ failCount+ " failure(s)");
        }//end if

    }//end renameFile
</code></pre>
