通过java执行tableau命令

通过java执行tableau命令,java,cmd,batch-processing,Java,Cmd,Batch Processing,我正在尝试使用Java执行3-7个命令。首先,我需要用cd更改目录,然后执行命令2)和3) (一) 然后我想写 (二) 在下面的命令中,我从字符串中获取文件名,我可以使用这种格式吗 (三) 我需要执行所有这些命令。我该怎么做?我认为这里的问题是,您缺少有关cmd工作原理的一些重要信息。具体来说,每个cmd实例都有自己的“当前目录”。所以 在cmd中运行cd时,它只影响该实例 当您运行runtime.exec(“cmd/c start cmd.exe…两次时,您会得到两个独立的cmd实例,一个接

我正在尝试使用Java执行3-7个命令。首先,我需要用
cd
更改目录,然后执行命令2)和3)

(一)

然后我想写

(二)

在下面的命令中,我从字符串中获取文件名,我可以使用这种格式吗

(三)


我需要执行所有这些命令。我该怎么做?

我认为这里的问题是,您缺少有关
cmd
工作原理的一些重要信息。具体来说,每个
cmd
实例都有自己的“当前目录”。所以

  • cmd
    中运行
    cd
    时,它只影响该实例
  • 当您运行
    runtime.exec(“cmd/c start cmd.exe…
    两次时,您会得到两个独立的
    cmd
    实例,一个接一个
所以(我认为)你在这里试图做的事情根本行不通

相反,你应该:

  • 生成包含整个命令序列的
    BAT
    文件,或
  • 在执行的每一行
    cmd
    中放入一张
    cd
    ,或
  • 使用绝对路径名,这样您就不需要
    cd

什么不起作用,出现了什么错误?在执行进程p=runtime.exec(“cmd/c start cmd.exe/c\”cd c:\\Program Files\\Tableau\\Tableau Server\\8.2\\bin”后,它会重新运行到主命令提示符,并执行tabcmd login-s-u c200433-p venkat@#“未找到tabcmd(因为它是在主cmd中执行的)我看不出这与Java有什么关系。如果执行了命令,但没有执行您希望它们执行的操作,这就是命令行解释器的问题。
Process p = runtime.exec("cmd /c start cmd.exe /C \"cd C:\\Program Files\\Tableau\\Tableau Server\\8.2\\bin");
runtime.exec("cmd /c start cmd.exe /K \tabcmd login -s http://localhost:80 -u c200433 -p venkat@#");
runtime.exec("tabcmd publish C:\\Users\\c200433\\Desktop\\Ana\\".getBytes()+filename+" --db-username IIP_RBM_USER --db-password Ytpqxsb9dw".getBytes()));