繁体   English   中英

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

[英]unable to rename file with dynamic paths in jmeter using beanshell

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

我有简单的代码,试图将路径(动态更改文件名并追加到路径)分配给文件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:\\"

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

可以请一个建议。

谢谢

几点建议:

  1. 删除开头和结尾的\\" ,它们不是必需的
  2. 确保到处都有双斜杠。 可选的跨平台选项将用File.separator替换斜杠,例如:

     "Users" + File.separator + "Thaneer_M" + File.separator + "..." 
  3. Beanshell将024视为八进制整数 ,请确保您正确使用它并知道自己在做什么。 如果您需要精确的“ 024”值,最好将其作为字符串传递

一些调试选项:

  • log.info("something")会将行打印到jmeter.log文件。 这样您可以看到变量值
  • 放置debug(); Beanshell脚本最开始的一行将触发调试输出到stdout
  • 用try / catch围绕代码,并将异常stacktrace打印到jmeter.log,可提供有关Beanshell错误的更多信息,例如:

     try { //your code here } catch (Throwable e) { log.error("Error in Beanshell", e); } 

有关JMeter中 Beanshell脚本的更多详细信息,请参见如何使用BeanShell:JMeter的“最喜欢的内置组件”指南。

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

  1. 打开源文件。
  2. 将内容复制到临时文件
  3. 使用file.delete()删除源文件
  4. 创建一个与源文件同名的新文件。
  5. 将临时文件的内容复制到此新文件中。
  6. 删除临时文件。

我知道这不是最好的方法,但是在jmeter 3.0中有效。

谢谢,Sumit Pal。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM