关于java6中scripting engine的invoke和invokeFunction的问题

在java6中加入了对scripts的支持(jsr223),并且捆绑了一种javascript的实现(来自mozilla的rhino)。
但是今天在使用时候发现一个小问题,jdk-6u12和jdk-6u13里的Invocable居然是不兼容的!

在jdk-6u12中是
invokeFunction(String name, Object… args)
而jdk-6u13中是
invoke(String name, Object… args)

在网上发现大多数的写法都是前一种(invokeFunction),搞不清楚为什么会出现这样的问题。但如果这的出现开发环境和部署环境稍有不同岂不是搞的很不爽,明明只是一个很小的问题。却可能造成很奇怪的结果,还要改代码重新编译才行。

解决方法:
1.开发环境和部署环境的jdk版本统一。
2.干脆使用BSF或者BSH。
虽说两种方法和简单直接,但是总觉得因为这么一点点问题而动这么大的干戈真不应该。

批量重命名的batch

把h:abc下所有的文件加一个.rmvb的后缀
set target_dir=H:abc
@echo off
setlocal EnableDelayedExpansion
cd %target_dir%
echo %target_dir%
for /f “delims=” %%i in (‘dir /b /a-D %target_dir%’) do (
ren %%i %%i.rmvb
)
echo done!
pause