Robocopy /mov 记录目标文件夹中的所有文件?
Robocopy /mov logs all files from target folder?
我使用 robocopy 将文件从源文件夹移动到目标文件夹。效果很好,我对 robocopy 的日志记录感到有点惊讶 - 它列出了目标文件夹的所有文件?
假设我们有两个文件夹,一个空的源文件夹和一个包含一些文件的目标文件夹 (target1-3)。如果我 运行 这个命令:
robocopy "D:\test\source" "D:\test\target" /S /MOV /R:10 /W:30 /UNILOG+:"log.txt"
我得到了这个输出(抱歉德国人):
-------------------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren fr Windows
-------------------------------------------------------------------------------
Gestartet: Dienstag, 6. April 2021 20:50:24
Quelle : D:\test\source\
Ziel : D:\test\target\
Dateien : *.*
Optionen: *.* /S /DCOPY:DA /COPY:DAT /MOV /R:10 /W:30
------------------------------------------------------------------------------
0 D:\test\source\
*EXTRA Datei 0 target1.txt
*EXTRA Datei 0 target2.txt
*EXTRA Datei 0 target3.txt
------------------------------------------------------------------------------
Insgesamt KopiertšbersprungenKeine šbereinstimmung FEHLER Extras
Verzeich.: 1 0 1 0 0 0
Dateien: 0 0 0 0 0 3
Bytes: 0 0 0 0 0 0
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Beendet: Dienstag, 6. April 2021 20:50:24
为什么 robocopy 会列出目标文件夹中的所有文件?我怎么能避免呢? (在实际用例中,此列表可能会变得很长。)
您可以使用额外的开关来减少日志记录。我建议看看 robocopy
的 documentation。您可以添加 /NFL
选项以忽略文件的日志记录。您可以添加 /NDL
选项来忽略目录的日志记录:
robocopy "D:\test\source" "D:\test\target" /S /MOV /R:10 /W:30 /NFL /NDL /UNILOG+:"log.txt"
但这将忽略所有文件和目录的日志记录(不仅是 EXTRA
个)。如果您只是不想在您的日志中包含 EXTRA
个文件和目录,但不想包含其他所有内容,则您需要额外的工具。您可以 post 处理您的日志文件(如果值得的话):
(Select-String -Path log.txt -Pattern '^\s+\*EXTRA' -NotMatch | Select-Object -ExpandProperty Line) | Set-Content -Path log.txt
此 PowerShell 管道将删除 log.txt
中以空格开头,后跟 *EXTRA
.
的每一行
仅供参考:robocopy
记录 EXTRA
个文件,因为它不仅可以用于复制,还可以用于单向同步。因此,您不仅可以将文件复制到目标位置,还可以删除目标位置的文件,这些文件在源位置(不再)存在。查看 /PURGE
和 /MIR
选项。
我使用 robocopy 将文件从源文件夹移动到目标文件夹。效果很好,我对 robocopy 的日志记录感到有点惊讶 - 它列出了目标文件夹的所有文件?
假设我们有两个文件夹,一个空的源文件夹和一个包含一些文件的目标文件夹 (target1-3)。如果我 运行 这个命令:
robocopy "D:\test\source" "D:\test\target" /S /MOV /R:10 /W:30 /UNILOG+:"log.txt"
我得到了这个输出(抱歉德国人):
-------------------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren fr Windows
-------------------------------------------------------------------------------
Gestartet: Dienstag, 6. April 2021 20:50:24
Quelle : D:\test\source\
Ziel : D:\test\target\
Dateien : *.*
Optionen: *.* /S /DCOPY:DA /COPY:DAT /MOV /R:10 /W:30
------------------------------------------------------------------------------
0 D:\test\source\
*EXTRA Datei 0 target1.txt
*EXTRA Datei 0 target2.txt
*EXTRA Datei 0 target3.txt
------------------------------------------------------------------------------
Insgesamt KopiertšbersprungenKeine šbereinstimmung FEHLER Extras
Verzeich.: 1 0 1 0 0 0
Dateien: 0 0 0 0 0 3
Bytes: 0 0 0 0 0 0
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Beendet: Dienstag, 6. April 2021 20:50:24
为什么 robocopy 会列出目标文件夹中的所有文件?我怎么能避免呢? (在实际用例中,此列表可能会变得很长。)
您可以使用额外的开关来减少日志记录。我建议看看 robocopy
的 documentation。您可以添加 /NFL
选项以忽略文件的日志记录。您可以添加 /NDL
选项来忽略目录的日志记录:
robocopy "D:\test\source" "D:\test\target" /S /MOV /R:10 /W:30 /NFL /NDL /UNILOG+:"log.txt"
但这将忽略所有文件和目录的日志记录(不仅是 EXTRA
个)。如果您只是不想在您的日志中包含 EXTRA
个文件和目录,但不想包含其他所有内容,则您需要额外的工具。您可以 post 处理您的日志文件(如果值得的话):
(Select-String -Path log.txt -Pattern '^\s+\*EXTRA' -NotMatch | Select-Object -ExpandProperty Line) | Set-Content -Path log.txt
此 PowerShell 管道将删除 log.txt
中以空格开头,后跟 *EXTRA
.
仅供参考:robocopy
记录 EXTRA
个文件,因为它不仅可以用于复制,还可以用于单向同步。因此,您不仅可以将文件复制到目标位置,还可以删除目标位置的文件,这些文件在源位置(不再)存在。查看 /PURGE
和 /MIR
选项。