繁体   English   中英

执行网络使用命令

[英]Executing a net use command

我需要执行写在批处理文件中的net use命令来启用驱动器。 批处理文件如下:

net use * /delete /Y
net use l: \\<windows drive name> /user:<domain>\<username> <password>

上面的批处理文件为我启用了一个驱动器,并且对我来说显示为L:驱动器。 我需要通过Java代码执行此批处理文件,然后将一些文件写入此驱动器。

我正在使用以下代码执行此批处理文件:

String[] array = { "cmd", "/C", "start", "C:/file.bat" };
Runtime.getRuntime().exec(array);

问题是,当我尝试访问驱动器以写入文件时,它给了我一个找不到路径的异常。 有时它运行,有时却没有。

朋友谁能帮助我了解问题出在哪里。 我执行的错误步骤是什么。 如果我不清楚我的问题,请告诉我。

有时它运行,有时却没有。

这看起来像是比赛条件。 Runtime.exec()在单独的进程中执行命令,而调用的应用程序继续运行。 然后,当您尝试访问批处理文件时,将不确定该批处理文件是否已经完成。

Runtime.exec()返回一个Process对象,您可以使用该对象与子流程进行通信。 对于您来说,等待该过程完成就足够了:

Process p = Runtime.getRuntime().exec(array);
p.waitFor();

// Now, your batch file should be completed and you can continue
// ...

我怀疑当命中实际的命令外壳时,Windows不喜欢“ /”。 也许改为尝试“ \\”? 外部流程执行有些棘手-您可能想看看Apache Commons Exec项目来帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM