0

当我从命令行运行以下命令时,我可以以远程用户身份运行 7-zip 并将文件解压缩到网络共享:

C:\PsExec.exe -u username -p password "C:\7z.exe" x -y -o\\network\extractedfiles\ C:\compressed.zip toextract.txt

我正在运行这个生成的行,就像我的应用程序正在运行它一样(注意我已经更改了目录、路径、用户名和密码,以便我可以在线发布它)。事实上,该行是从我的应用程序日志中复制的。

但是由于某种原因,当我使用以下代码从 Java 运行此命令时,它会一直等待。“\network\extractedfiles\”路径上没有文件出现。

final Process copyFile = Runtime.getRuntime().exec( cmd );
final int exit = copyFile.waitFor();

其中 cmd 是上面的字符串。有任何想法吗?

更多信息1:

我还想说,我注意到当它通过命令行运行时,psexec 在单独的命令窗口中启动 z-zip。问题可能是 zip 的输出没有被处理吗?我尝试关闭输入流,但似乎并没有解决我面临的问题。

更多信息 2:

我尝试从命令中注销输出,这就是我得到的:

INFO 2012-05-03 15:07:55,188 - Command output: PsExec v1.98 - Execute processes remotely
INFO 2012-05-03 15:07:55,188 - Command output: Copyright (C) 2001-2010 Mark Russinovich
INFO 2012-05-03 15:07:55,188 - Command output: Sysinternals - www.sysinternals.com
INFO 2012-05-03 15:07:55,188 - Command output: 

然后它永远坐着。在命令行上运行时,下一行输出是:

C:\7z.exe exited with error code 0.

所以看起来 7-zip 挂了。它甚至没有开始提取文件 - 当我检查文件预计提取的目录时,什么都没有出现。

更多信息 3:

我使用 ionic.zip.dll 在 .net 中创建了自己的解压缩器。我的解压器非常简单——通过命令行接受参数,没有任何输出。但它仍然做了完全相同的事情 - 解压缩没有开始并且执行挂起。也许 psexec 正在做一些奇怪的事情???psexec 想要在外部命令控制台中运行解压缩程序这一事实是否会导致 Java 出现任何问题?

4

2 回答 2

0

可能有一个错误,你应该从你的进程中读取流来确定

于 2012-05-03T18:29:35.990 回答
0

就像更新一样;我尝试使用 C# .net 创建自己的解压缩器、psexec 甚至我自己的命令行包装器(不想重新制作整个应用程序),这两个自定义应用程序都没有任何输出,并且我正在运行的命令有效每次从以外部用户身份运行的 cmd 窗口中。但是,从 Java 开始,它工作了一次,然后第二次解压缩器冻结了,再也没有工作过。似乎是防病毒或防火墙问题。不幸的是,它现在不在我的手中,这里的 IT 部门目前正在帮助我们运行它,我一直在等待他们的回复。

于 2012-05-08T23:46:36.973 回答