java.exe -version 和 pushd?

java.exe -version 和 pushd?

我注意到当我运行以下命令时

Pushd \\RemoteMachine\C$ && java.exe -version

我获取了所用计算机的 Java 版本。但是,当我使用以下命令之类的搜索选项运行 pushd 命令时,我获取了在该计算机上找到的实际信息。

Pushd \\RemoteMachine\C$ && dir /s java.exe

为什么会这样?是否可以在远程 PC 上运行 java.exe -version 并让其在我的屏幕上输出该计算机的信息?

答案1

当您在示例中运行时java.exe,shell 仅搜索当前目录(即\\RemoteMachine\C$),但是不是其子目录。(换句话说,它更像是dir java.exe没有 . 的/s。)

由于远程计算机中没有这样的文件C:\,下一步是搜索%PATH%环境变量中指定的目录(通常只包含本地目录)。

要解决您的问题,请指定 的完整路径java.exe。您甚至不需要使用pushd

C:\> "\\RemoteMachine\C$\Program Files\Java\jre6\bin\java.exe" -version

答案2

执行程序SysInternals 完全满足您的需求。示例如下:

psexec \\RemoteMachine java.exe -version

答案3

尽管 PsExec 可以完成这项工作,但我无法使用它。

一旦我使用,我就可以java.exe -version通过更改目录在远程机器上执行命令pushd

Pushd \\RemoteComputer\C$
cd "Program Files\Java\jre6\bin"
Java.exe -version

或者同时

Pushd \\RemoteComputer\C$ && cd "Program Files\Java\jre6\bin" && java.exe -version && popd

相关内容