如何使用 Pentaho Spoon 重命名没有扩展名的文件
How to use Pentaho Spoon to rename files that do not have an extension
我是 Pentaho Spoon 的新手。我在一个文件夹中有大约 100 个文本文件,其中 none 个具有文件扩展名。我发现如果我创建一个作业并移动一个文件,一次一个,我可以简单地重命名该文件,在末尾添加一个 .txt 扩展名。我想做的是创建一个作业,该作业遍历并重命名每个文件并添加 .txt 扩展名。我试过使用正则表达式,但似乎无法正常工作,因为没有文件扩展名。
任何帮助将不胜感激。
这是一个非常简单的解决方案,但您需要使用转换,因为作业步骤不会这样做,好吗?
您需要执行以下步骤:
获取文件名:只需添加您的文件夹和 RegExp“.*”(不带双引号),这样所有内容都会列出。使用 "Show filename(s)..." 按钮检查是否正常。
已修改 Java 脚本值:声明一个 new_filename var 连接所需的扩展名。添加脚本后记得点击"Get Variables"输出新字段
var new_filename = filename + '.txt';
处理文件:select操作=移动和filename/new_filename作为您的source/target文件名。
就是这样!
重命名一组文件是我不会使用 Kettle 的一件事。为什么不让 shell 做 shell 最擅长的事情呢?
rem example for Windows CMD shell
ren absolute-path-to-folder\*. *.txt
这可以使用 Shell 作业条目来完成,如果您有理由在 Kettle 中这样做的话。
我以前看过 "just use a shell script" 的答案。如果您可以保证您的 Kettle 服务器与开发人员工作站位于同一 OS 上,则效果很好。我在 Dev/Spoon 实例为 Windows 的环境中,但 Prod/Kettle 环境为 Linux,因此您无法编写一个脚本文件来统治它们。
至于"Why on earth would you do this?",我的场景是集成场景。我们使用 Pentaho 进行数据集成,但使用不同的工具进行企业集成。我想要一个 Pentaho Job 来生成一个输出文件,我想要我的企业集成工具获取该文件并用它做一些事情,但不是在 Pentaho 完成写入文件之前。当企业集成解决方案识别出文件存在但 Pentaho 尚未完成写入时,重命名有助于避免竞争条件。
如果我可以重命名一组文件,例如从 test..csv.processing 更改为 test..csv,那么 Pentaho 最初会创建文件.processing 扩展名,然后在完成后删除扩展名。正在寻找 test.*.csv 的企业集成解决方案将不会开始处理该文件,直到 Pentaho 重命名它。宾果游戏,无竞争条件。
我是 Pentaho Spoon 的新手。我在一个文件夹中有大约 100 个文本文件,其中 none 个具有文件扩展名。我发现如果我创建一个作业并移动一个文件,一次一个,我可以简单地重命名该文件,在末尾添加一个 .txt 扩展名。我想做的是创建一个作业,该作业遍历并重命名每个文件并添加 .txt 扩展名。我试过使用正则表达式,但似乎无法正常工作,因为没有文件扩展名。 任何帮助将不胜感激。
这是一个非常简单的解决方案,但您需要使用转换,因为作业步骤不会这样做,好吗?
您需要执行以下步骤:
获取文件名:只需添加您的文件夹和 RegExp“.*”(不带双引号),这样所有内容都会列出。使用 "Show filename(s)..." 按钮检查是否正常。
已修改 Java 脚本值:声明一个 new_filename var 连接所需的扩展名。添加脚本后记得点击"Get Variables"输出新字段
var new_filename = filename + '.txt';
处理文件:select操作=移动和filename/new_filename作为您的source/target文件名。
就是这样!
重命名一组文件是我不会使用 Kettle 的一件事。为什么不让 shell 做 shell 最擅长的事情呢?
rem example for Windows CMD shell
ren absolute-path-to-folder\*. *.txt
这可以使用 Shell 作业条目来完成,如果您有理由在 Kettle 中这样做的话。
我以前看过 "just use a shell script" 的答案。如果您可以保证您的 Kettle 服务器与开发人员工作站位于同一 OS 上,则效果很好。我在 Dev/Spoon 实例为 Windows 的环境中,但 Prod/Kettle 环境为 Linux,因此您无法编写一个脚本文件来统治它们。
至于"Why on earth would you do this?",我的场景是集成场景。我们使用 Pentaho 进行数据集成,但使用不同的工具进行企业集成。我想要一个 Pentaho Job 来生成一个输出文件,我想要我的企业集成工具获取该文件并用它做一些事情,但不是在 Pentaho 完成写入文件之前。当企业集成解决方案识别出文件存在但 Pentaho 尚未完成写入时,重命名有助于避免竞争条件。
如果我可以重命名一组文件,例如从 test..csv.processing 更改为 test..csv,那么 Pentaho 最初会创建文件.processing 扩展名,然后在完成后删除扩展名。正在寻找 test.*.csv 的企业集成解决方案将不会开始处理该文件,直到 Pentaho 重命名它。宾果游戏,无竞争条件。