2010-08-16 5 views
10

일부 서버에서 일부 파일을 이동하려면 PowerShell 스크립트를 사용하고 있습니다. 이동하려는 파일이 이미 대상에 있는지 테스트하고 싶습니다. 같은 이름의 파일 만이 아닙니다. Powershell 파일 비교

나는 그것을해야

Compare-Object $File1 $File2

생각하지만 상관없이 파일이 무엇인지 항상 그들이 같은 예를 것을 반환하지 않습니다.

InputObject   SideIndicator        
-----------   -------------        
D:\1.gif    =>           
D:\1.wma    <=  

두 개의 파일이 동일한 지 테스트하는 다른 방법이 있습니까?

+0

당신은 (PS 이내) DOS를 사용할 수 있습니다'**있는 Fc.exe "파일 1" "파일 2 "**'(참고 : PowerShell에서는"fc "가"format-custom "이므로"fc.exe "여야합니다.) 이렇게하면 암호화된 출력이 훨씬 줄어 듭니다. – Andrew

답변

6

이 나는 ​​이름, 길이, 수정 한 날짜가 실제 파일 개체를 비교합니다 "같은"

Compare-Object (ls Source\Test.*) (ls Dest\Test.*) -Property Name, Length, LastWriteTime 

의 당신의 정의에 따라 달라집니다 것 같아요. -IncludeEqual을 추가하면 두 위치에서 동일한 항목이 표시됩니다. 당신은 단지 "대상"에서 동일하지 않습니다 "소스"에서 파일을 복사 할 경우

바로이 작업을 수행 :

Compare-Object (ls $Source) (ls $Destination) -Property Name, Length, LastWriteTime -passthru | 
Where { $_.PSParentPath -eq (gi $Source).PSPath } | 
Copy-Item $Destination 

얻을 - 컨텐츠 (에 의해 제안 스크립트를 쓰기 시작하지 마십시오 다른 사람) 파일 비교를 할 수 있습니다 - 당신은 모든 것을 메모리에로드 할 것입니다 ...

robocopy 사용을 고려하십시오 (명령 행 구문의 날짜가 지정되어 있음에도 불구하고). = †

+0

고맙습니다. 방향이 맞습니다. – zebidy

1

은 당신과 같이 평등에 대한 파일 내용, 주어진 경로 $path1$path2을 테스트 할 수 있습니다

[io.file]::ReadAllText($path1) -eq [io.file]::ReadAllText($path2) 

을 ... 당신이 ::ReadAllBytes() 방법의 결과를 비교하는 대신 선택할 수 있지만.

변경되거나 추가 된 파일 만 복사 할 때는 PowerShell에서도 Robocopy을 사용합니다. 당신은 단지 Compare-Object에 두 개의 문자열을 제공하고

+1

예 Robocopy 경로를 시작했으나 불투명하게 내 요구 사항을 충족시키지 못했습니다. 분명히 이것은 일반적인 솔루션이므로 Google에서 찾은 모든 것이 RoboCopy로 이어지는 것으로 보입니다. – zebidy

+1

Robocopy가 당신의 요구 사항을 어떻게 충족시키지 못했을까요? – kbrimington

+0

이 방법으로 관리 : 두 개의 파일을 메모리에 완전히로드하고 비교하는 중 ... = 매우 메모리 요구량이 많습니다. –

5

, 당신은 파일 내용을 원하는 :

Compare-Object (gc $File1) (gc $File2) 

또한 당신이 제공하고있는 출력은 하지이 파일이 동일하다는 것을 의미한다.

3

comp.exe 또는 fc.exe의 무엇이 잘못 되었나요? 그냥 $ 확인해? 명령을 성공했는지 여부를보기 위해 호출 한 후

2
compare $file1 $file2 -includeequal -excludedifferent 
+0

이것은 파일의 내용이 아니라 두 문자열을 비교합니다. –

1

(은 Get-FileHash $의 경로 1) .Hash -eq (은 Get-FileHash $의 경로 2)를 .Hash이

+1

이 솔루션은 1 년 이상 된 해결책입니까? –