java 挂起,java-执行批处理脚本时,Processbuilder挂起

ProcessBuilder只是挂起而无法完成.我已经看到有关此问题的大量文章,但是我仍然无法解决这个问题.谁能看到与此有关的问题或有建议?

我正在尝试执行一个批处理文件,以使用户能够在活动目录上启用邮件.

码:

private void initialize() {

frame = new JFrame();

frame.setBounds(100, 100, 450, 300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JButton button = new JButton("TEST");

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

System.out.println("Starting process");

ProcessBuilder pb = new ProcessBuilder(

"cmd.exe",

"/C",

"Y:\\mail-enable-users-groups.bat");

Process process = null;

try

{

process = pb.start();

ProcessOutputThread t = new ProcessOutputThread(process.getInputStream(), new StringBuffer());

t.start();

process.waitFor();

t.interrupt();

}

catch (IOException e1)

{

e1.printStackTrace();

}

catch (InterruptedException e)

{

e.printStackTrace();

}

System.out.println("Process ended");

}

});

frame.add(button);

}

private static class ProcessOutputThread extends Thread

{

private StringBuffer m_output;

private InputStream m_inputStream;

public ProcessOutputThread(InputStream inputstream, StringBuffer output)

{

super( "ProcessOutputThread" );

m_inputStream = inputstream;

m_output = output;

}

@Override

public void run() {

byte[] buffer = new byte[ 8192 ];

try {

while( true )

{

int available = m_inputStream.available();

if( available == 0 )

{

try

{

Thread.sleep( 100 );

}

catch( InterruptedException e )

{

break;

}

continue;

}

int len = Math.min( buffer.length, available );

len = m_inputStream.read( buffer, 0, len );

String outString = new String( buffer, 0, len );

m_output.append( outString );

System.out.println(outString);

}

}

catch( IOException e )

{

e.printStackTrace();

}

}

}

批处理文件:

PowerShell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Get-User -RecipientTypeDetails User -Filter { UserPrincipalName -ne $Null } | Enable-Mailbox

输出:

Y:\>PowerShell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Get-User -RecipientTypeDetails User -Filter { UserPrincipalName -ne $Null } | Enable-Mailbox

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值