Java 批处理文件中的一行代码在未列出的情况下运行良好,在for循环中不起作用

Java 批处理文件中的一行代码在未列出的情况下运行良好,在for循环中不起作用,java,windows,batch-file,cmd,Java,Windows,Batch File,Cmd,基本上,我正在处理一个批处理文件,该文件将查找不包含特定字符的特定文件,然后在这些文件上使用.jar文件。以下是我的代码: Set "pattern=$" FOR /R "%PathToDirectory%" %%# in (*.class) Do ( Echo %%~nx# | FIND /V "%pattern%" 1>NUL && ( java -jar "somejar.jar" %%~# > test\%%~n#.java

基本上,我正在处理一个批处理文件,该文件将查找不包含特定字符的特定文件,然后在这些文件上使用.jar文件。以下是我的代码:

Set "pattern=$"

FOR /R "%PathToDirectory%" %%# in (*.class) Do (
    Echo %%~nx# | FIND /V "%pattern%" 1>NUL && (
        java -jar "somejar.jar" %%~# > test\%%~n#.java
    )
)
pause
我已经检查了.bat文件调用的命令以及java调用路径是否有效,.jar和.bat位于同一目录中,尽管控制台输出:系统无法找到指定的文件。调用somejar.jar的代码行与中的代码行相同,但与中一样,文件的路径是硬编码的,与bat放入控制台的路径几乎是1:1,在另一个.bat文件中工作得很好


可以肯定地说,我很困惑,在这方面花的钱比我应该花的还多,所以我在这里请求一些帮助

将pushd%~dp0放在批处理文件的开头,以将工作目录更改为批处理文件的路径。我假设您的somejar.jar不在c:\windows\system32中,如果双击,默认情况下脚本将在c:\windows\system32中运行。

windows不使用该字符。如果你的路径包含空格或特殊字符,没有引号的文件引用将无法正确处理。尝试使用java-jar somejar.jar%%~>test\%%~n。java@Noodles-尽管一些MS文档声称变量应为字母,但实际上,几乎所有字节码都是可行的,包括。有关更多信息,请参阅。