在Windows批处理中动态读取多个文件

时间:2016-11-16 04:41:38

标签: windows file powershell batch-file cmd

我的要求可能看起来有点奇怪。

我有一个要阅读的文件列表,例如: 的 FILE1.TXT,FILE2.TXT,File3.txt,File4.txt

此外,还要对每个文件执行ETL过程。但是,对此ETL过程的输入仅接受文件名' File.txt'而不是' File1.txt,File2.txt..etc ..'

由于尺寸限制,ETL流程不会接受更大的' File.txt'通过组合所有' File1.txt,File2.txt..etc ..' 。这使得这里有点复杂。

因此,一种解决方法是循环运行ETL过程并使用' File.txt'每次迭代。

换句话说,首先是' File1.txt'被重命名为' File.txt'并执行ETL过程并结束此过程,' File2.txt'已准备好重命名为' File.txt'并一直持续到文件的可用性。

是否可以开发Windows批处理,即

- 存储临时文件中的所有可用文件名(File1,File2) - 首先执行 批处理脚本重命名' File1.txt'或者在临时文件中第一个到' File.txt'。

------然后我将执行ETL过程--- [这不可能在批处理脚本中编码]

一旦ETL过程结束,我将回想起相同的批处理脚本,它可能指向temp中的第二个文件并从< File2.txt'重命名。到' File.txt'并继续到临时文件中的行尾。

我认为,包括延迟'在批处理脚本中不会是理想的,因为无法预测ETL过程时间表。

期待您宝贵的想法

感谢。

我正在努力使要求尽可能简单。 - 这是在windows .bat脚本中开发的。我没有PowerShell脚本。只有基本的Windows .bat版本。 :(

第1步: - 创建一个包含特定目录中所有.txt文件的TempFileList文件

第2步: - 创建批处理文件                a)逐行从TempFileList文件中获取输入                b)从TempFileList文件(File1.txt)中获取第一个文件名,并将其重命名为File.txt

第3步: - 2b完成后,批处理脚本需要等待.complete文件可用性[注意: - .complete文件只有在成功运行第三方应用程序后才可用,即在此上下文中使用ETL)

第4步: - 从步骤3获取.complete文件后,脚本需要从TempFileList文件中查找第二个文件名并执行重命名等。

步骤2,3,4将在循环中执行,并且结束直到处理TempFileList文件中的所有文件名。

1 个答案:

答案 0 :(得分:0)

这样的东西?

postulat 1:您的ETL特征总是在C:\ temp

中使用名为file.txt的文件

postulat 2:您的列表文件位于c:\ templistfile

traitment:

任务1:运行一个powershell脚本,复制一个文件,以结束运行任务2 此脚本文件中的命令

$pathfileused="C:\temp\file.txt"
$pathfiles="c:\templistfile"
gci $pathfiles -file -filter *.txt | select -First 1 | move-item -Destination $pathfileused -Force

任务2:如果file.txt存在,则运行您的processus ETL,以结束运行任务1