我的需求可能顯得有點奇怪。在Windows批處理中動態讀取多個文件
我有一個文件列表讀取例如: FILE1.TXT,FILE2.TXT,File3.txt,File4.txt
此外,具有ETL過程對每個文件執行。但是,對此ETL過程的輸入僅接受文件名'File.txt'而不是'File1.txt,File2.txt ..等等'。
由於大小限制,ETL過程不會接受更大'File.txt'文件通過結合所有'File1.txt,File2.txt..etc ..'。這在這裏有點複雜。
因此,一個解決方法是在循環中運行ETL過程,並在每次迭代時使用'File.txt'提供它。
換句話說,首先'File1.txt'重命名爲'File.txt'並執行ETL過程並結束這個過程,'File2.txt'準備重命名爲'File.txt'並繼續直到文件的可用性。
不管是Windows批處理可以開發,實現即
-store所有可用的文件名(文件1,文件2)在一個臨時文件批處理腳本的 - 首先執行重命名「FILE1.TXT」或一個這是臨時文件中的第一個文件「File.txt」。
------然後我將執行ETL過程--- [這是不可能的在批處理腳本代碼]
一旦ETL處理結束時,我會記得同一批次腳本這可能應該指向臨時文件中的第二個文件並從'File2.txt'重命名爲'File.txt'並繼續直到臨時文件中的行結束。
我認爲,包括批處理腳本中的'延遲'將不會很理想,因爲ETL流程時間表無法預測。
期待您的寶貴想法
謝謝。
我想盡量簡化要求。 - 這是在windows .bat腳本中開發的。我沒有一個PowerShell腳本。只有基本的Windows .bat版本。 :(
第一步: - 在一個特定的目錄中創建的所有.txt文件一個文件TempFileList
第2步: - 創建由線 B A批處理文件 a)注意到從TempFileList文件線路輸入)獲取第一個文件名從TempFileList文件(File1.txt)並將其重命名爲File.txt
第三步: - 一旦2b完成,批處理腳本需要等待.complete文件的可用性[注意:--complete文件將會僅在成功運行第三方應用程序(即ETL)後纔可用)
第四步: - 從步驟3獲取.complete文件時,腳本需要查看TempFileList文件中的第二個文件名並執行重命名等。
步驟2,3,4將循環執行並結束,直到TempFileList文件中的所有文件名被處理。
是的,這很容易實現。在批處理文件中循環,從臨時文件讀取文件名或動態獲取它們不是問題。它可能暫停以等待用戶輸入繼續到下一個文件。但是你的問題到底是什麼? – soja
@soja我編輯了原始帖子,試圖使要求儘可能清晰。請看看 –
嗯,你已經完成了一個體面的工作,概述了你的需求,但是Stack Overflow並不是真正的代碼編寫服務。我建議你嘗試一下,如果它不工作,發佈你試過的東西,並詢問如何解決它。這裏有一些提示。步驟1和2:使用(文件夾\ *。txt)中的'FOR %% a(do)(在這裏使用「%% a」做回聲)。這是你的循環。您不需要臨時文件。您可以使用'pause'手動等待,或者您可以使用'IF NOT EXIST%〜na.complete'和'GOTO:label'等待。這是一個開始。嘗試'HELP命令'查看所有參數。 – soja