2016-11-16 5 views
0

Мое требование может показаться немного странным.Чтение нескольких файлов в Windows динамически динамически

У меня есть список файлов для чтения, например: 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, может быть разработана для достижения т.е.

-Store всех доступных имен файлов (file1, File2) в временном файле -Первого выполнения Пакетного сценария переименовывает «FILE1.TXT» или один который сначала входит в файл temp в файл File.txt.

------ Тогда я буду выполнять процесс ETL --- [Это невозможно закодировать в пакетном сценарии]

После заканчивается процесс ETL, я вспоминаю тот же пакетный сценарий который потенциально должен указывать на второй файл в temp и переименовывать из «File2.txt» в «File.txt» и продолжается до конца строки в временном файле.

Я думаю, что «задержка» в пакетном скрипте не будет идеальной, поскольку сроки выполнения ETL не могут быть предсказаны.

Ожидая ваших ценных мыслей

Спасибо.


Я стараюсь сделать так просто, насколько это возможно. -Это должно быть разработано в сценариях Windows .bat. У меня нет сценария powershell. Только базовая версия .bat. :(

первый шаг: - Создать TempFileList файл со всеми .txt файлов в определенном каталоге

второй шаг: - Создание командного файла а) принимает входные данные из файла линии TempFileList по линии б) принимает 1-е имя файла из файла TempFileList (File1.txt) и переименовывает его в File.txt

3-й шаг: - После завершения 2b пакетный скрипт должен дождаться наличия полной версии файла [Примечание: - .complete file будет доступный только после успешного запуска стороннего приложения, то есть ETL в этом контексте)

4-й шаг: - После получения. Полного файла с шага 3 скрипт должен заглянуть во второе имя файла из файла TempFileList и выполнить переименование и т. Д.

Шаги 2,3,4 должны выполняться в цикле и заканчиваться до тех пор, пока не будут обработаны все имена файлов в файле TempFileList.

+3

Да, это было бы легко сделать. Цикл в пакетном файле, чтение имен файлов из временного файла или получение их динамически не является проблемой. Он может приостановить, чтобы ждать ввода пользователем, чтобы продолжить следующий файл. Но каков ваш вопрос? – soja

+0

@soja Я отредактировал исходное сообщение с попыткой сделать требования максимально ясными. Пожалуйста, посмотрите –

+0

Ну, вы сделали достойную работу, изложив свои требования, но Stack Overflow на самом деле не является службой написания кода. Я предлагаю вам попробовать что-то, и если он не работает, напишите, что вы пробовали, и спросите, как его исправить. Вот несколько советов. Шаг 1 и 2: используйте 'FOR %% a in (папка \ *. Txt) do (echo do stuff с" %% a "здесь)'. Это ваша петля. Вам не нужен временный файл. Вы можете использовать 'pause' для ожидания вручную, или вы можете использовать' IF NOT EXIST% ~ na.complete' и 'GOTO: label' для ожидания. Это начало. Попробуйте 'HELP command', чтобы увидеть все параметры. – soja

ответ

0

Что-то вроде этого?

postulat 1: ваше использование traitment ETL всегда файл с именем file.txt в C: \ Temp

postulat 2: список ваших файлов в C: \ templistfile

traitment:

задача 1 : запустить Powershell скрипт который COPIE один файл, чтобы закончить запуск задачи 2 команды в этом файле сценария

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

задача 2: запустить отростка ETL если file.txt существует, для завершения выполнения задачи 1

+0

На всех дисках NTFS не обязательно сортировка. Таким образом, «Первый 1» может быть любым. OP не ясно, что если его ETL-процесс будет 'eat' File.txt по окончании или если он должен быть переименован. – LotPings

+0

сначала не для сортировки, это для одного только файла ... Потому что его черта признака один файл одним файлом – Esperento57

+0

@ Esperento57 отредактировал исходное сообщение с попыткой сделать требования максимально ясными. Пожалуйста, посмотрите –

Смежные вопросы