興味深い問題があります。バッチ ファイルを作成し、バッチ ファイルが変数を設定する Java アプリケーションがあります。現在、アプリケーション自体が別のバッチ ファイルから呼び出されています。したがって、変数を親バッチ ファイルに渡す方法を教えてください。バッチが別のバッチを呼び出している間はこれを行うことができますが、バッチファイルがjarファイルを呼び出すときはできません。インターンはバッチファイルを作成して実行し、終了します。これが私のコードです。
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());
}
}