我有一个CMD批处理文件,其中WMIC会挂起,具体取决于之前的命令。我把它修剪成以下内容:
Hello World!
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/commons/net/ftp/FTPClient
at com.myapp.app.App.main(App.java:16)
Caused by: java.lang.ClassNotFoundException:
org.apache.commons.net.ftp.FTPClient
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
使用不同的命令而不是ECHO.< NUL > NUL
WMIC /?
,重定向到ECHO.
设备以外的其他文件或将不同的参数传递给NUL
时,会发生同样的情况。这只是重现问题的最简单方法。添加WMIC
无济于事。当直接输入/interactive:off
提示符(保持“已损坏”)时也会发生这种情况。
结果CMD
等待用户输入,直到用户输入 Ctrl + Z 后才会继续在其自己的行上输入(或只需 Ctrl + C )。
但只有当(任何!)上一个命令输入和输出重定向时......!?
作为副作用,创建了WMIC
文件。
作为一种解决方法TempWmicBatchFile.bat
解决了这种情况。这也会创建一个WMIC /? < NUL
文件。
以前的行不应该影响TempWmicBatchFile.bat
的行为!或者他们应该?
我发现有不同的人有这个问题,但没有解释。这只是一个错误吗?在WMIC
?或者在Win32 API中?
所有这些都发生在具有Windows Server 2003 x64 SP2的虚拟机中。我的Windows 10机器按预期工作。