【发布时间】:2019-06-22 08:55:09
【问题描述】:
因此,当我手动启动桌面上的 bat 文件时,它可以工作,因为通过其图标执行 bat 文件使用的是图标(文件)的目录,即“C:\Users\Michael\Desktop”。
set CLASSPATH = %~dp0 &:: %~dp0 stands for the directory of the bat file
java InitArray 5 0 4 &:: comment
pause
当我从其桌面图标运行上面的 bat 文件(InitArray.bat)时,它可以工作。
java InitArray 5 0 4 &:: comment
pause
当我从其桌面图标运行上面的 bat 文件(test.bat)时,它可以工作。
但是当我从任务调度程序运行 InitArray.bat 时,它使用目录“C:\WINDOWS\system32”。但这应该不是问题,因为 bat 文件所做的第一件事就是“设置 CLASSPATH = C:\Users\Michael\Desktop\”。
这是任务调度程序尝试运行 InitArray.bat 的结果。
C:\WINDOWS\system32>set CLASSPATH = C:\Users\Michael\Desktop\
C:\WINDOWS\system32>java InitArray 5 0 4
Error: Could not find or load main class InitArray
C:\WINDOWS\system32>pause
Press any key to continue . . .
现在,我知道我可以通过将“C:\Users\Desktop\”添加到环境变量 CLASSPATH 来解决这个问题。但我不应该这样做,因为我在尝试运行 java 类之前在我的 bat 文件的第一行中手动将类路径设置为桌面。
【问题讨论】:
-
您的代码中充满了非法内容,为什么会有人阅读它?删除所有格式错误的
lable。他们以::开头,告诉我们你复制了这些东西。 -
set CLASSPATH = %~dp0设置了一个名为CLASSPATH+ SPACE 的变量,所以去掉=-sign 周围的空格...啊,去掉&::东西(通常很好,但会导致可怕的问题);对于 cmets,请使用rem... -
@catcat 不,我没有复制这些东西。我不是dos编程方面的专家。我认为 &:: 只是一个无害的注释,就像 java 中的 // 一样。
-
或者,
cd %~dp0。或java -cp "%~dp0" InitArray 5 0 4.
标签: java windows batch-file