我有一个BAT文件,内容如下:

set logfile=  D:\log.txt

java com.stuff.MyClass %1 %2 %3  >> %logfile%

不过,当我运行bat文件时,会得到以下结果:
C:\>set logfile= D:\log.txt

C:\>java com.stuff.MyClass <val of %1> <val of %2> <val of %3>   1>>D:\log.txt
The parameter is incorrect.

我几乎可以肯定“参数是不正确的。”是因为里面有一个无关的1。我还认为这可能与.bat文件的编码有关,但我不能完全弄清楚是什么原因造成的。以前有人遇到过这种情况,或者知道是什么导致了这种情况以及如何解决?
编辑
和往常一样,教训是在你寻求帮助之前,先检查一下它是否插上了电源。版本控制中的bat文件使用d:\ log.txt,因为它打算从包含d驱动器的服务器上运行。在没有D驱动器的计算机上测试更改并在本地运行时,未能更改为使用C:\ log.txt,这就是导致错误的原因。很抱歉浪费了你的时间,谢谢你的帮助,尽量克制住让我失望的冲动。

最佳答案

这可能看起来是个愚蠢的问题,但是在运行bat文件的上下文中是否存在一个现有的d:drive?
有一次我遇到这样一个情况,一个bat文件被用作任务管理器中任务的命令行,但run-as用户被设置为框中的本地用户,无法访问网络驱动器。
如果d:驱动器是网络驱动器,运行bat文件,比如说,该计算机上的本地管理员帐户(而不是域用户帐户)可能无法访问d:。

关于java - 奇怪的.bat文件行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/570376/

10-09 02:14