【问题标题】:Robocopy Move Select Folders and Content Using .txt File Input While Preserving TimestampsRobocopy 在保留时间戳的同时使用 .txt 文件输入移动选择文件夹和内容
【发布时间】:2026-01-24 03:55:01
【问题描述】:

我想使用 .txt 文件将所选文件夹和内容(子文件夹和文件)从源目录移动到目标目录以读入所选文件夹名称。

我尝试过从多台机器上运行。

我已尝试获取文件夹和文件的所有权。

我已尝试将完全控制权授予“所有人”。

我删除并重新创建了 src 和 dst 文件夹和内容。

我尝试删除“/MOVE /E”之后的所有额外选项。

gc "C:\testText.txt" | % { robocopy "C:\testSrc" "C:\testDst" 
$_ /MOVE /E /R:3 /W:15 /MT:128 /log+:C:\log.txt /v /tee }

我希望此脚本从 .txt 文件中读取我想要从源目录移动到目标目录的选定文件夹(连同它们的内容和时间戳)的文件夹名称。

脚本只复制文件夹和子文件夹,而不是文件。也不是删除源数据,但我想这与无法复制文件的原始问题有关。

testText.txt 内容(这些是位于源目录中的文件夹的名称):

0000003000
0000003001
0000003002

日志输出(testText.txt 中列出的每个文件夹的输出相同):

开始时间:2019 年 5 月 8 日,星期三 12:33:27 PM 来源:C:\testSrc\ 目标:C:\testDst\

Files : 0000003000

选项:/V /TEE /S /E /DCOPY:DA /COPY:DAT /MOVE /MT:128 /R:3 /W:15



           Total    Copied   Skipped  Mismatch    FAILED    Extras
Dirs :         4         4         1         0         0         0
Files :        0         0         0         0         0         0
Bytes :        0         0         0         0         0         0
Times :   0:00:00   0:00:00                       0:00:00   0:00:00
Ended : Wednesday, May 8, 2019 12:33:27 PM

【问题讨论】:

  • [1] 日志中有什么内容? [2] 您通过管道传输到 robocopy 调用的文件中有什么内容?
  • 在我的帖子中添加了请求的信息。
  • 其实我只是注意到日志在 Skipped 列中有 '1',通常显示为 '4'
  • 您的命令告诉 robocopy 使用 文件夹 作为文件规范。那不管用。 3 个主要选项是 source dirdest dirfile specification。您不能为第三个选项使用文件夹名称。 [咧嘴]
  • 你知道,我实际上也在想同样的事情,但不确定,因为日志表明它识别出它们是目录并无论如何都复制了它们。但我猜这个选项不具备递归的能力,因为它是为文件构建的。你对这项任务有什么建议吗? ForEach-Object 循环?

标签: powershell robocopy


【解决方案1】:

这行得通。

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

robocopy "C:\testSrc\$line" "C:\testDst\$line" /MIR /DCOPY:T /E /R:3 /W:15 
/MT:128 /log+:C:\Log.txt /v /tee

rm -R "C:\testSrc\$line"

}

【讨论】: