簡體   English   中英

遞歸文件夾/文件復制 Powershell 腳本 - 完成列表后 Robocopy 不會停止復制

[英]Recursive Folder/File Copy Powershell Script - Robocopy won't stop copying once done with list

我正在嘗試提出一個 PS 腳本,該腳本從 txt 文件中讀取文件夾名稱並遞歸地查找源目錄中的文件夾/文件,然后使用 robocopy 復制到目標目錄,同時保留文件夾名稱、結構和時間戳。 看起來(在日志輸出中)腳本沿着列表向下移動並復制文件夾和文件,但當它到達列表的末尾時,它開始復制源目錄中的所有其他內容。

txt 文件數據如下所示:

400033
400042
400045
400047
400058
 etc..

“腳本”看起來像:

foreach ($line in 
[System.IO.File]::ReadLines("C:\temp\filecopy\TEST_400210_400033.txt")) { 

robocopy "J:\testSRC\$line" "S:\testDEST\$line" /DCOPY:DAT /E /R:3 /W:15 /log+:C:\temp\logs\TEST_ROBOCOPY_filecopy_Log1.txt /v /tee

}

誰能指出我正確的方向?

我已經嘗試在一個完全不同的腳本中使用 Powershell 的Copy-Item並且能夠使該腳本工作但它太慢了。 現在正在嘗試 robocopy。 它按照它應該的順序讀取和復制它應該的文件,但是一旦它復制了列表,它就會開始整個目錄的完整副本,而不是在文本文件中的文件處停止。

文件末尾是否有額外的一行?

400033
400042
400045
400047
400058
[Blank Line]

即它遍歷所有文件名然后最后一行將轉換為:

$line = ""

所以:

robocopy "J:\testSRC\" "S:\testDEST\" /DCOPY:DAT /E /R:3 /W:15 /log+:C:\temp\logs\TEST_ROBOCOPY_filecopy_Log1.txt /v /tee

例如 robocopy 根文件夾: robocopy "J:\testSRC\"


編輯:

嘗試將文件輸出到屏幕以驗證輸入文件是否正確並列出預期的目錄。

foreach ($line in 
[System.IO.File]::ReadLines("C:\temp\filecopy\TEST_400210_400033.txt")) { 
    Write-Host "J:\testSRC\$line"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM