아래 기능은 디렉터리 구조를 평평하게 만들고 선택한 마지막 쓰기 날짜를 기반으로 파일을 복사합니다.PowerShell Flatten Directory 구조체
function mega-copy($srcdir,$destdir,$startdate,$enddate)
{
$files = Get-ChildItem $SrcDir -recurse | Where-Object { $_.LastWriteTime -ge "$startdate" -and $_.LastWriteTime -le "$enddate" -and $_.PSIsContainer -eq $false };
$files|foreach($_) {
cp $_.Fullname ($destdir+$_.name) -Verbose
}
}
이 작은 디렉토리에 매우 성공적이었다, 그러나 여러 하위 디렉토리 및 파일과 디렉토리에 대한 사용하려고 할 때 수백만, 그것은 단순히 포장 마차의 수십 수천의 수백에 이르기까지 계산합니다. 이 파일을 실행하여 24 시간 동안 그대로두면 PowerShell 콘솔 창에 하나의 파일이 복사되거나 아무 것도 나타나지 않습니다. 이 특별한 경우에는 약 2 천 7 백만 개의 파일이있었습니다.
그러나 단순한 배치 파일은 매우 느리지 만 아무런 문제없이 작업을 수행했습니다.
여기에 도움을 주시면 감사하겠습니다.
중간 변수를 사용하지 마십시오 : http://stackoverflow.com/a/39657987/3959875 – wOxxOm
이것은 robocopy가 더 적합 할 수 있으며 wOxxOm이 말한 것처럼 변수에 파일을 저장하지 말라고합니다. 파이프 라인을 사용하십시오. PowerShell 3.0 이상인 경우 Get-Childitem의 -File 스위치를 사용할 수도 있습니다. – Matt
니스. 두 분 모두 나에게 관련있는 정보를 제공해 주셨고이 방법으로 많은 양의 데이터를 이동하는 데 걸리는 시간을 줄이는 것처럼 보였습니다. 정말 고맙습니다. – GreatMagusKyros