下午好,
我尝试使用 robocopy 和 Powershell 递归抓取子目录中的所有文件并将它们移动到一个“根”目录。我尝试使用 copy-item 执行此操作,但它会挂起,当尝试复制超过 10k 个文件时,这非常麻烦。
function fcopy ($SourceDir,$DestinationDir)
{
Get-ChildItem $SourceDir -Recurse -File | ForEach-Object ($_) {
$SourceFile = $_.Name
$DestinationFile = $DestinationDir + $_
if (Test-Path $DestinationFile) {
$i = 0
while (Test-Path $DestinationFile) {
$i += 1
$DestinationFile = $DestinationDir + $_.basename + $i + $_.extension
}
} else {
#
Robocopy.exe $($SourceDir) $($DestinationDir) $($SourceFile) /L /V /COPY:DAT
#Write-Output $SourceFile
}
#
Robocopy.exe $($SourceDir) $($DestinationDir) $($SourceFile) /L /V /COPY:DAT
#Write-Output $SourceFile
}
}
fcopy -SourceDir 'A:\User Name Inbox Search_Export\08.04.2022-0829AM\User' -DestinationDir 'A:\Destination'
但是,如果我运行这个程序,我会得到以下输出:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Friday, August 5, 2022 3:09:51 PM
Source : A:\User Name Inbox Search_Export\08.04.2022-0829AM\User\
Dest : A:\Destination\
Files : IAH JUNE.pdf
Options : /V /L /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
0 A:\User Name Inbox Search_Export\08.04.2022-0829AM\User
Robocopy 似乎列出了该文件,但随后我只收到代码 0 和源目录。目标目录为空。
有任何想法吗?
答案1
/L 开关
指定仅列出文件(而不复制、删除或加盖时间戳)。
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy