【问题标题】:Batch File Error When Setting CLASSPATH设置 CLASSPATH 时的批处理文件错误
【发布时间】:2015-01-21 00:37:13
【问题描述】:

我有许多需要同时运行的 weka 数据集,因此我正在创建一个批处理文件来执行此操作。

@ECHO OFF

FOR /r %%I IN (*.arff) DO (
    ECHO Running %%~nI
    SET CLASSPATH=C:\Program Files (x86)\Weka-3-6\weka.jar
    java weka.classifiers.functions.LinearRegression -t %%~nI -x 10
)

当我在常规命令行中运行 SET CLASSPATH 命令和 java 命令时,它们可以正常工作,并且它们也可以在批处理文件中自行工作,但是一旦我将它们嵌套在 for 循环中,我就开始得到“ \Weka-2-6\weka.jar 在这个时候是意外的”错误。

我不是 Java 或批处理文件编程方面的专家,所以如果修复真的很简单,请原谅我,但我一直在互联网上徘徊,但我还没有找到任何解决这个问题的方法。我在这里做错了什么?

感谢您的帮助。

【问题讨论】:

  • 您是否尝试将路径用双引号括起来作为 SET CLASSPATH="C:\Program Files (x86)\Weka-3-6\weka.jar"
  • 是的,很遗憾错误仍然存​​在。

标签: java batch-file weka


【解决方案1】:
@ECHO OFF
setlocal
SET "CLASSPATH="C:\Program Files (x86)\Weka-3-6\weka.jar""

FOR /r %%I IN (*.arff) DO (
    ECHO Running %%~nI
    java weka.classifiers.functions.LinearRegression -t %%~nI -x 10
)
endlcoal

设置类路径可以在for循环结束后展开,所以最好在循环外定义。

【讨论】:

  • 引号是防止值中包含无意的尾随空格的好主意。但是 SET 命令不会在未引用值的第一个空格处停止。此外,SET 值确实会立即生效,您只是无法通过正常扩展看到它。延迟扩展会在循环中暴露新设置的值。在循环开始之前移动 SET 是最好的选择。
  • 谢谢,我不知道为什么我没有看到;这很有意义。
猜你喜欢
  • 2010-11-12
  • 2018-04-21
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2015-01-21
  • 2016-02-01
相关资源
最近更新 更多