0

私は作業用のファイル名変更 Java ツールを持っています。名前を変更する各ファイルの名前変更プロセスの一部としてボックスをチェックした場合、コマンドライン コマンドを実行する if 条件を追加したいと思います。

後で dos コードを変更しますが、動作することがわかったサンプルです。私の問題の一部は、私のfilerenameが独自のクラスであるため、このクラスを組み合わせる方法を理解するか、メインの名前変更クラスからdosコマンドを参照する必要があります。

アップデート

回答からの変更でコードを更新しましたが、コマンドライン コマンドが機能せず、エラーなしで Java がクラッシュします。コマンドはコマンドラインから機能します。

import java.io.IOException;
import java.io.InputStream;

public class doscommandrun {
     public static void run() {  
         final String dosCommand = "cmd converter.exe file.doc -android -o file.txt";
            try {
                final Process process = Runtime.getRuntime().exec(
                        dosCommand + " ");
                final InputStream in = process.getInputStream();
                int ch;
                    while((ch = in.read()) != -1) {
                        System.out.print((char)ch);
                    }
                    } catch (IOException e) {
                        e.printStackTrace();
            }
        }
    }

enter code hereファイル名変更コード:

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.substring(0,4)+ generatedSequence;
            if(cbxAndroid.isSelected() == true ){
                doscommandrun.run();
                }



        //the New File Name
        String newFileName = Prefix + fileName.substring(0,4) + 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

2 に答える 2

0

renametoolクラスのcmdの後に/cを追加します

私はまだ問題を抱えていますが、別の問題を抱えています。

于 2012-06-22T22:27:43.610 に答える
0

run()呼び出されたときに現在メイン メソッドにあるものを実行する、呼び出された doccommandrun クラスで静的メソッドを作成できます。

public class DosCommandRun 
{
   public static void run() 
   {
      //..do stuff from main
   }
}

dos コマンドを呼び出したいときはいつでもDosCommandRun.run()、コードに挿入するだけです。

于 2012-06-22T19:05:10.960 に答える