0

就像标题一样,我想批量重命名文件,但保留文件名的前 4 个字符。

尝试修改此开源批处理文件重命名工具以供个人使用。有什么建议么?

我添加了重命名文件的代码。它说filename = filename + generatedSequence;很确定那是我需要添加它的地方,但是什么会指定文件名的前 4 个字符?

//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;
}

下面是代码的重命名部分。

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() && OUTPUT_ON == false){
            buildOutput();
            OUTPUT_ON = true;
        }




        //display the list of files and readability of each file
        for(int i = 0; i < 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 < 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->"+ fileList[i] + "\nfile name->" + fileName + "\nextension->" + 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 ->"+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 && 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
4

0 回答 0