Pasar una variable establecida desde un tiempo de ejecución por lotes sobre la marcha al archivo por lotes que llama en JAVA

Tengo un problema interesante. Tengo una aplicación Java que crea un archivo por lotes y el archivo por lotes establece una variable. Ahora, la aplicación en sí misma está siendo llamada desde otro archivo por lotes. Por lo tanto, me gustaría poder pasar la variable al archivo por lotes principal. Puedo hacer esto mientras un lote llama a otro lote, pero no cuando el archivo por lotes llama a un archivo jar desde el cual el interno crea un archivo por lotes, lo ejecuta y sale. aquí está mi código.

    import java.awt.Window;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.security.InvalidAlgorithmParameterException;
    import java.security.InvalidKeyException;

    import javax.crypto.BadPaddingException;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.ShortBufferException;

    import junit.framework.Test;

    public class main 
    {
        private static byte[] KeyBytes = {0,0,0,0,0,0,0,0};
        private static byte[] ivBytes = {0,0,0,0,0,0,0,0};

        public static void main(String[] args) throws InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, ShortBufferException, BadPaddingException, IOException, ClassNotFoundException, InterruptedException
        {   
            ObjectCrypter EncStr = new ObjectCrypter(KeyBytes,ivBytes);
            if(args.length == 2 )
            {
                if (args[0].equals("-E")|args[0].equals("-e"))
                {
                    byte[] tbyte = EncStr.encrypt(args[1]);
                    String test = byteToString(tbyte); 
                    System.out.println(test);
                }
                else if (args[0].equals("-D")|args[0].equals("-d"))
                {
                    byte[] t = stringToByte(args[1]);
                    writeBat("SET HypPWD=" +String.valueOf(EncStr.decrypt(t)));
                    //System.out.println("cmd /C " + getPath() + "tmpPwd.bat");
                    Process proc = Runtime.getRuntime().exec("cmd /C start tmpPwd.bat");
                    proc
                    proc.waitFor();
                }
            }
            else
            {
                System.out.println("Wrong Argument set please revise input");
                System.exit(0);
            }
        }
        private static String getPath() throws UnsupportedEncodingException 
        {
//....
        }
        public static String byteToString(byte[] b) 
        {
//....
        }
        public static byte[] stringToByte(String s)
        {
//....
        }
        public static void writeBat(String txt)
          {
              try
              {
                  FileWriter fstream = new FileWriter("tmpPwd.bat");
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write("@ECHO OFF");
                  out.newLine();
                  out.write(txt);
                  out.newLine();
                  out.write("EXIT");
                  out.newLine();
                  out.write("DEL tmpPwd.bat");
                  out.close();
              }
              catch (Exception e)
              {
                  System.err.println("Error: " + e.getMessage());
              }
          }

preguntado el 01 de julio de 12 a las 07:07

¿Sigues interesado en la respuesta, o la resolviste? ¿Está diciendo que tiene: parent.bat, ejecuta la aplicación java, ejecuta child.bat. Child.bat sale, por ejemplo, con 42. Java app sale con 42. Parent.bat ve 42? -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.