2017-01-05 1 views
-1

powershell 스크립트에 대한 도움이 필요합니다. 비슷한 이름의 특정 수정 날짜로 파일을 이동해야합니다. LastWriteTime는 정확한 시간을 비교 한 DateTime-ge입니다 ... 이후Powershell Get-ChildItem을 사용하여 특정 날짜의 파일 이동

$SourceFolder = "C:\documents\testing123.txt" 

$targetFolder = "D:\documents" 

Get-ChildItem -Path $SourceFolder -Filter E0100* | where-object {$_.LastWriteTime -eq ("08/01/2015") | move-item -destination $targetFolder 
+0

내가 대신 robocopy''사용하는 것이 좋습니다 것입니다 (날짜, 경로 및 필터가 변경되었습니다). –

+1

$ SourceFolder는 파일이 아닌 폴더 여야합니까? –

+1

또한 LastWriteTime을 날짜 문자열과 비교하는 것이 시간을 포함하지 않으므로 작동하지 않을 수 있습니다. $ _. LastWriteTime.Date -eq "08/01/2015" –

답변

1

여기 실행 내가 시도 스크립트이며, 그것은 단지 정지됩니다. 다음은 원하는 기간을 사용하여 복사하는 예제입니다.

$SourceFolder = "C:\documents\testing123.txt" 

$targetFolder = "D:\documents" 
$startTime =[DateTime]"08/01/2015" 
$endTime = $startTime.AddDays(1) 
Get-ChildItem -Path $SourceFolder -Filter E0100* | 
    Where-Object {$_.LastWriteTime -ge $startTime -and $_.LastWriteTime -lt $endTime} | 
    Move-Item -destination $targetFolder 

다른 언급했듯이 소스 폴더 경로가 올바르지 않은 것처럼 보입니다. 여기

내가 시도 스크립트의 robocopy 버전입니다

$SourceFolder = "D:\test" 

$targetFolder = "D:\test2" 
$startTime =[DateTime]"01/05/2017" 
$endTime = $startTime.AddDays(1) 
$files = @() 
Get-ChildItem -Path $SourceFolder -Filter * | 
    Where-Object {$_.LastWriteTime -ge $startTime -and $_.LastWriteTime -lt $endTime -and $_.Attributes -ne 'Directory'} | 
    ForEach-Object { $files += $_.Name} 

if($files.Count -gt 0) 
{ 
    Write-Verbose "running robocopy $SourceFolder $targetFolder $files /mov" -Verbose 
    robocopy $SourceFolder $targetFolder $files /mov 
} 
+0

감사합니다. 소스는 파일이 아닌 디렉토리입니다. 올바른 것입니다. 원본 위치에 많은 양의 레코드가있는 경우 추가 항목 하나가 동결되지 않도록 할 수있는 방법이 있습니까? 어떤 사람들은 robocopy를 사용하라고 제안했는데, robocopy가 데이터를 검색하는 것인가 아니면 실제로 그것을 옮길 것인가하는 유일한 혼란이 있습니까? – Bobby

+0

'/ mob' 스위치가'robocopy'를 실행하면 복사가되지 않습니다. '/ MAXLAD : n'과'/ MINLAD : n'은 최대 및 최소 마지막 액세스 날짜를 필터링합니다 (필자는 날짜 필터를 찾을 수 없습니다). PowerShell에서 복사 할 목록을 구성하여 'robocopy'에 전달할 수도 있습니다. – TravisEz13

관련 문제