无法使用beanshell在jmeter中使用动态路径重命名文件

时间:2015-12-04 22:09:15

标签: java string jmeter beanshell

我正在尝试使用jmeter中的beanshell sampler重命名文件

我有简单的代码,我试图将路径(动态更改文件名并附加到路径)分配给文件func。

String filename=  "\"C:\\Users\\Thaneer_M\\Downloads\\apache-jmeter-2.13_save\\JmeterRecordings\\PerfIssues\\All Savers Insurance Company_PerformanceCheck"+024+".xlsx\"";
File file = new File(${filename});

File file2 = new File("C:\\Users\\Thaneer_M\\Downloads\\apache-jmeter-2.13_save\\JmeterRecordings\\PerfIssues\\All Savers Insurance Company_PerformanceCheck025.xlsx");

boolean success = file.renameTo(file2);
if (!success) {
log.info "file renamed successfully"
}

如果我使用像

这样的静态文件路径,我可以成功重命名该文件
File file = new File("C:\\Users\\Thaneer_M\\Downloads\\apache-jmeter-2.13_save\\JmeterRecordings\\PerfIssues\\All Savers Insurance Company_PerformanceCheck025.xlsx");
File file2 = new File("C:\\Users\\Thaneer_M\\Downloads\\apache-jmeter-2.13_save\\JmeterRecordings\\PerfIssues\\All Savers Insurance Company_PerformanceCheck026.xlsx");
 boolean success = file.renameTo(file2);
if (!success) {    log.info "file renamed successfully"    }

错误:

inline evaluation of: ``String filename=  ("C:\Users\Thaneer_M\Downloads\apache-jmeter-2.13_save\JmeterR . . . '' Token Parsing Error: Lexical error at line 1, column 24.  Encountered: "U" (85), after : "\"C:\\"

文件名动态变化,我希望能够通过将整数附加到文件名来动态创建文件路径字符串。

请有人劝告。

谢谢

2 个答案:

答案 0 :(得分:2)

很少有建议:

  1. 删除开始和结束M N,他们不需要
  2. 确保你到处都有双斜杠。替代的跨平台选项将用File.separator代替斜杠,如:

    \"
  3. Beanshell对待"Users" + File.separator + "Thaneer_M" + File.separator + "..." Octal integer,请确保您正确使用它并知道您正在做什么。如果您确切需要" 024"重视将其作为字符串传递
  4. 一些调试选项:

    • 024会将该行打印到 jmeter.log 文件。这样您就可以看到变量值
    • 在Beanshell脚本的最开头放置log.info("something")行将触发调试输出到stdout
    • 使用try / catch包围代码并将异常堆栈跟踪打印到jmeter.log提供了有关Beanshell错误的更多信息,例如:

      debug();

    有关JMeter中Beanshell脚本的更多详细信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。

答案 1 :(得分:1)

同样的事情发生在我身上。为了解决这个问题,我在Beanshell代码中执行了以下操作:

  1. 打开源文件。
  2. 将内容复制到临时文件
  3. 使用file.delete()
  4. 删除源文件
  5. 创建一个与源文件同名的新文件。
  6. 在此新文件中复制临时文件的内容。
  7. 删除临时文件。
  8. 我知道这不是最好的方法,但这适用于jmeter 3.0。

    谢谢, Sumit Pal。