파일의 마지막 수정 날짜를 기준으로 복사


1

아래 표시된 것처럼 소스 디렉토리 아래에서 원하는 대상으로 복사하고 싶습니다.

소스 디렉토리 :

--Dummy
----dirA (contain files last modified 2/7/2015)
----dirB (contain files last modified 3/7/2015)
----dirC (contain files last modified 18/7/2015)
----dirD (contain files last modified 18/7/2015)
----dirE (contain files last modified 2/7/2015)

dir더미에서 각각 특정 마지막 수정 날짜를 가진 파일을 포함

대상 디렉토리는 다음과 같다고 가정합니다.

--Dummy2015-07-2
----dirA (contain files last modified 2/7/2015)
----dirE (contain files last modified 2/7/2015)

--Dummy2015-07-3
----dirB (contain files last modified 3/7/2015)

--Dummy2015-07-18
----dirC (contain files last modified 18/7/2015)
----dirD (contain files last modified 18/7/2015)

지금까지 here 을 참조하면 다음과 같은 결과가 나왔습니다.

$sourcePath = 'c:/dummy'
$destPath = 'e:/dummy'  

Get-ChildItem -recurse -Path $sourcePath | Group {$_.LastWriteTime.ToString("yyyy-MM-dd")} | 
 Foreach-Object{
     $folder = New-Item -Path "$($destPath)$($_.Name)" -ItemType Directory -Force
     $_.Group | Where-Object { -not (Test-Path "$($folder.FullName)\$($_.Name)") } | Copy-Item -Destination $folder.FullName 
}

그러나 위의 코드는 대상을 다음과 같이 만드는 소스 더미의 디렉토리에 파일을 직접 복사합니다.

--Dummy2015-07-2
----(all files from dirA & dir E)

--Dummy2015-07-3
----(all files from dirB)

--Dummy2015-07-18
----(all files from dirC & dirD)

(가능한 경우 robocopy를 사용 하여이 작업을 수행하고 싶습니다)

답변:


0

dirA에 2015.07.02에서 수정 된 파일 만 포함되어 있습니까? 아니면 그 전에 수정 된 파일이 포함되어 있습니까? 내 대답에, 나는 이전을 가정합니다. 또한 각 폴더에는 파일 만 있거나 동일한 폴더와 연결할 폴더가 있다고 가정합니다 (즉, 상위 폴더에서 폴더를 옮기지 않습니다).

아래는 작동해야하는 코드입니다. 처음 2 개의 변수를 채우십시오.
그리고 이봐 robocopy! :)

$PathToRootOfDummy = "C:\path\to\dummy\root"
$PathToReplacementPrefix = "C:\path\to\dummy_new-" # date goes after the '-'

Get-ChildItem $PathToRootOfDummy | Where-Object {$_.PSISContainer -eq $true} | ForEach-Object {
    $nf = "$PathToReplacementPrefix$($(Get-ChildItem -Path $PathToRootOfDummy\$($_.Name) | Where { ! $_.PSIsContainer} )[0].LastWriteTime.tostring("yyyy-MM-dd"))"
    mkdir $nf
    robocopy -s -e $PathToRootOfDummy\$_ $nf
}

어쨌든 Copy-Item우리가 이것을하고 있기 때문에 대신에 대신 사용 하는 것이 좋습니다 Powershell.
nehcsivart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.