当我从命令行运行以下命令时,我可以作为远程用户运行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中创建了自己的unzipper。我的unzipper非常简单 - 通过命令行接受params,没有任何输出。但它仍然做了完全相同的事情 - 解压缩不启动,执行挂起。也许psexec正在做一些奇怪的事情??? psexec想要在外部命令控制台中运行unzipper会导致Java出现任何问题吗?
答案 0 :(得分:0)
可能有一个错误,你应该从你的过程中读取流来确定
答案 1 :(得分:0)
就像更新一样;我尝试使用C#.net创建我自己的unzipper,psexec甚至我自己的命令行包装器(不想重新制作整个应用程序),自定义应用程序都没有任何输出,我运行的命令工作正常每次从作为外国用户运行的cmd窗口。但是,从Java开始,它只运行一次,然后第二次解压缩,再也没有工作过。似乎是防病毒或防火墙问题。不幸的是,它现在不在我的手中,这里的IT部门目前正在协助我们开始运行,我一直在等待他们的回复。