diff 명령에 해당하는 Windows 란 무엇입니까?


284

나는 이것과 비슷한 게시물이 있다는 것을 알고있다 : here . 언급 한 명령을
사용해 보았지만 comp하나는 "abcd"와 같은 데이터가 있고 다른 하나는 "abcde"와 같은 두 개의 파일이 있으면 파일의 크기가 다르다는 것입니다. 나는 그들이 정확히 다른 곳을 알고 싶었습니다. 유닉스에서 간단한 diff는 "abd"와 "abc"와 같은 것이 있으면 Windows의 comp 명령이 작동하는 행과 열을 알려줍니다. 그렇지 않다. 내가 이것에 사용할 수있는 아이디어가 있습니까?

답변:


461

CMD 쉘 또는 배치 파일에서이를 실행하십시오.

FC file1 file2

FC 이진 파일을 비교하는 데 사용할 수도 있습니다.

FC /B file1 file2

3
두 개의 폴더에서 변경된 모든 파일을 어떻게 처리합니까? 마찬가지로, folder1의 내용을 folder2의 내용과 비교합니다. folder2의 변경된 행이 표시됩니까?
Wolfpack'08 08

17
"Wolfpack'08 @ : FC path1\* FC path2\*폴더에있는 모든 파일을 비교하는 것 path1하고 path2. 그들은 (파일)이 동일한 이름을 제공, 이름이 일치하지 가진 파일이있는 경우, FC는하지만 때로 믿을 첫 번째 폴더의 파일, 누락 된 파일을보고 할 것 두 번째 폴더에는없고 다른 방법으로는 찾을 수 없습니다 모든 불일치를 잡으려면 다른 기술이 필요할 것입니다.
Andriy M

@AndriyM 그렇다면 새로운 파일로 인해 실제 줄을 반환하지 않고 FC 오류가 발생합니까? 오류 메시지 만?
Wolfpack'08

1
@ Wolfpack'08 : 예, 누락 된 상대방에 대한 메시지, 기존 당사자의 줄 없음. (그러나 그것은 다른 기존 파일 쌍의 처리를 종료하지 않으며, 그것이 원하는 경우 여전히 비교가 수행됩니다.)
Andriy M

@AndriyM 따라서 "오류가 발생하면 : files in both directories are diff'd; files in only one directory throw errors."흥미 롭습니다 . 그러나 분명히 diff와 동등한 타사 프로그램이 있습니까?
Wolfpack'08

36

글쎄, Windows에서 나는 행복하게 diff많은 다른 GNU 도구를 실행 합니다. cygwin으로 할 수는 있지만 개인적으로 GnuWin32 는 훨씬 가벼운 설치 경험이기 때문에 선호 합니다.

그래서 내 대답은 Windows에 해당하는 그 자체 diff가 다른 것 diff입니다!


1
Cygwin의 기본 설치에는 diff가 포함되지 않은 것 같습니다. 그것을 얻기 위해 어떤 추가 패키지를 설치해야합니까?
Warren Dew

7
나는 cygwin을 권장하지 않습니다. 나는 기본 Win32 포트 diff를 사용합니다
David Heffernan

1
@WarrenDew 필요한 Cygwin 패키지는 다음과 같습니다 diffutils. cygwin.com/cgi-bin2/…
Steve

24

Winmerge에는 체크 아웃 할 가치 가있는 명령 줄 유틸리티 가 있습니다.

또한 필요한 것에 따라 그래픽 부분도 사용할 수 있습니다.


2
이것은 기본 제공 Windows 유틸리티는 아니지만 오픈 소스이며 가벼우 며 경험상 버그가없는 것이 좋습니다.
david.barkhuizen

19

또 다른 대안은 여기 에서 git을 다운로드하여 설치하는 입니다. 그런 다음에 경로를 추가 Git\bin\하여에 PATH변수입니다. 이것은 diff뿐만 아니라 Windows 명령 행에서 사용할 수있는 다른 많은 Linux 명령도 제공합니다.

PATH컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하여 변수를 설정할 수 있습니다 . 그런 다음 화면 왼쪽에서 Advanced System Settings (고급 시스템 설정)를 클릭 할 수 있습니다. 팝업에서 환경 변수를 클릭 한 다음 사용자 변수에서 PATH 변수를 추가하거나 업데이트하십시오.Git\bin\

힘내 diff 문서


@firelight-답변 주셔서 감사합니다. 여기서 의미하는 바를 자세히 설명 할 수 있습니까 : "Git \ bin \에 대한 경로를 PATH 변수에 추가하십시오."
BKSpurgeon

2
@BKSpurgeon-컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 경우 화면 왼쪽의 고급 시스템 설정을 클릭 할 수 있습니다. 팝업에서 환경 변수를 클릭 한 다음 Git \ bin \을 사용하여 사용자 변수에 PATH 변수를 추가하거나 업데이트하십시오.
Tim Hutchison

@JustinCormack 이것에 대한 언급이 있습니까? 방금 Git Bash에서 diff를 시도했는데 효과가있었습니다.
Tim Hutchison

3
@Tim Hutchison, 귀하의 답변 : "이것은 diff뿐만 아니라 Windows 명령 줄에서 사용할 수있는 많은 다른 Linux 명령을 제공합니다." -무슨 소리 야? Git을 설치할 때 git...PATH에서 실행 가능한 실행 파일 만 있어야합니다 . 또한 답에는 아마도 중요한 정보가 포함되어야합니다 . git diff단지 diff 도구를 작성하는 것 뿐만 아니라을 작성해야합니다 diff.
Petr Bodnár

친구, 그것은 완전히 다른 것입니다diff
vintproykt

14

FC는 제 경우에는 훌륭하게 작동합니다. 변경 된 줄만 원했기 때문에 도움이되지 않았습니다. FC는 파일 이름, 동일한 행 및 양자 비교와 같은 추가 데이터를 제공합니다.

    >fc data.txt data.txt.bak   
    ***** DATA.TXT
    ####09
    ####09
    ####09
    ***** DATA.TXT.BAK
    ####09
    ####08
    ####09

그러나 필자의 경우 변경 된 줄만 원했고 다른 헤더 나 데이터없이 해당 줄을 다른 파일로 내보내기를 원했습니다.

그래서 "findstr" 을 사용하여 파일을 비교했습니다.

findstr /V /G:data.txt.bak data.txt >DiffResult.txt

어디 :

data.txt.bak 오래된 파일의 이름입니다

data.txt 새 파일의 이름입니다

DiffResult.txt 변경된 데이터를 포함합니다. 즉 한 줄만 #### 09


1
/ 변경된 첫 번째 행과 마지막 블록 행 / N 행 번호 표시
Lukas

10

fc. fc는 Cygwin의 diff보다 큰 파일 (> 4GB)을 처리하는 것이 좋습니다.


10

Powershell (Windows의 일부)도 있습니다. 빠르지는 않지만 유연합니다. 기본 명령은 다음과 같습니다. 더 나은 형식이 필요한 경우 사람들은 다양한 cmdlet 및 스크립트를 작성했습니다.

PS C:\Users\Troll> Compare-Object (gc $file1) (gc $file2)

Windows의 일부는 아니지만 Visual Studio 개발자 인 경우 WinDiff (그래픽)와 함께 제공됩니다.

그러나 개인적으로 가장 좋아하는 것은 BeyondCompare이며, 비용은 $ 30입니다.


4

DiffUtils 는 아마도 가장 좋은 방법 일 것입니다. diff와 동등한 Windows입니다.

내 지식으로는 내장 된 것이 없습니다.


그러나 오늘도 그 페이지에서 제공되는 꽤 오래된 버전 2.8.7에 버그가 있음을 발견했습니다 (특정 PDF 파일을 비교할 때 동일한 것으로보고 됨). 따라서 이제는 firelight에서 제안한 "git diff"를 선호합니다.
anre

4

COMP에 오류가 발생하는 이유는 유틸리티가 비교중인 파일의 크기가 같다고 가정하기 때문입니다. 이를 극복하기 위해 '/n'비교할 줄 수를 지정할 수있는 옵션을 사용할 수 있습니다. ( 'comp /?'명령 행 에 입력하여 comp가 지원하는 옵션을 참조하십시오 . 따라서 명령은 다음과 같습니다.

C:\>comp "filepath1" "filepath2" /a /l /n=(the number of lines you want to compare) /c 

COMP를 계속 사용하려면 문제를 해결해야합니다. 그러나 이것은 실제로 큰 파일에는 문제가 될 것입니다.

그러나 comp 옵션이지만, 나는 그것이 원시적과 느낌을 FC더 나은 옵션입니다. 자주 사용하는 파일을 필요로하는 경우 함께 사용 FORFILES하여 FC함께 사용할 수 있습니다 .

FC는 다음과 같은 방법으로 사용됩니다.

C:\>fc /c(case insensistive) /lbn(number of errors allowed before you wanna stop compare) /n(display line number) "filename1" "filename2"

'fc /?' 희망으로 볼 수있는 많은 옵션이 있습니다.




0

다음 도구가 귀사에 필요한지 잘 모르겠습니다. 그러나 특정 파일에는 온라인 도구를 사용하고 싶습니다. 이렇게하면 운영 체제에 관계없이 사용할 수 있습니다. 다음은 예입니다 : diffchecker.com

그러나 내 필요에 따라 프로젝트 파일의 변경 사항과 로그를 추적하는 가장 좋은 도구는 GIT이라고 생각합니다. 팀에서 일하는 경우 서버에서 온라인으로 리포지토리를 만들거나 Bitbucket 또는 Github와 함께 사용할 수 있습니다.

누군가에게 도움이되기를 바랍니다.


0

머신에 git을 설치했다면 git 터미널을 열고 Linux diff명령을 정상적으로 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.