“逃避”<&燃气轮机&引用;对于来自java的cmd文件

“逃避”<&燃气轮机&引用;对于来自java的cmd文件,java,batch-file,process,cmd,escaping,Java,Batch File,Process,Cmd,Escaping,在cmd.exe中,我尝试以下操作: echo " read "book <init>"" echo“阅读”书籍“” 错误是: 系统找不到指定的文件。 它与 echo "read "book ^<init^>"" echo“阅读”书籍^ 但是,如果我想从java作为参数发送,它将不起作用: String s4 = "read \"book ^<init^> \"" ; String s4=“阅读”书籍^\”; 如何从java中转义for cmd 完

在cmd.exe中,我尝试以下操作:

echo " read "book <init>""
echo“阅读”书籍“”
错误是:

系统找不到指定的文件。

它与

echo "read "book ^<init^>""
echo“阅读”书籍^
但是,如果我想从java作为参数发送,它将不起作用:

String s4 = "read \"book ^<init^> \"" ;
String s4=“阅读”书籍^\”;
如何从java中转义<>for cmd

完整代码:

    public static void main(String[] args) throws IOException, InterruptedException{

    List<String> paramsArray = new ArrayList<String>();

    String s = "read \"book ^<init^> \"" ;
    paramsArray.add("exec.cmd"); //cmd file that only has echo %*
    paramsArray.add(s);

    ProcessBuilder process = new ProcessBuilder(paramsArray).inheritIO(); 

    Process p = process.start();

    int exitStatus = p.waitFor();

    System.out.println("exitStatus is " + exitStatus);

    if (exitStatus == 0)
    {
      System.out.println("Ok!");
    }
    else{

        System.out.println("Not ok!");
    }
}
publicstaticvoidmain(String[]args)抛出IOException、interruptedeexception{
List paramsArray=new ArrayList();
String s=“read\”book^\”;
paramsArray.add(“exec.cmd”);//只有echo%的cmd文件*
paramsArray.add(s);
ProcessBuilder进程=新的ProcessBuilder(paramsArray).inheritario();
进程p=进程.start();
int exitStatus=p.waitFor();
System.out.println(“exitStatus是”+exitStatus);
如果(exitStatus==0)
{
System.out.println(“Ok!”);
}
否则{
System.out.println(“不正常!”);
}
}

我想你的问题是:


“如何将参数传递给包含多个引号和特殊字符的bat文件,使bat文件无法对其进行解释?”
在Java中,可以将双引号(“”)替换为单引号:

your\u string=your\u string.replace(“\”,“”);

但最好在字符串前面加上“^”,即:

 String s = "^" +"read \"book ^<init^> \"" ;
String s=“^”+”读取\“book^\”;
cmd中的测试:

echo " read "book <init>""

echo  ^" read "book <init>""
echo“阅读”书籍“”
echo^“阅读”书籍“

为什么要在命令行上使用流重定向字符?@Kamayan,很抱歉,我不理解这个问题。我的问题是,我将一些参数从另一个文件传递到bat文件,该文件类似于“revert this:”eu.popin.tm" . 我需要用这个论点。但是我在系统找不到指定的文件时遇到了这个错误。我不理解cmd如何解释“<>”
字符将命令的输出重定向到文件。卡亚曼,我现在明白了。我想把这个参数当作一个字符串,从第一个“到最后一个”。我怎么做?