O que é o Windows equivalente ao comando diff?

eu sei que há um post semelhante a este: aqui .
Eu tentei usar o comando {[[0]} como mencionado, mas se eu tiver dois arquivos, um com dados como" abcd "e o outro com dados" abcde", ele apenas diz que os arquivos são de tamanhos diferentes. Queria saber onde é que eles diferem. Em Unix, o diff simples Me Diz qual linha e coluna, o comando comp no windows funciona se eu tiver algo como "abd" e "abc". Não de outra forma. Alguma ideia do que posso usar para isto?

Author: Community, 2011-07-29

13 answers

Coloque isto no ficheiro CMD shell ou lote:

FC file1 file2

FC também pode ser usado para comparar ficheiros binários:

FC /B file1 file2
 383
Author: Andriy M, 2017-11-20 10:35:24

Bem, no Windows Eu corro alegremente {[[[0]} e em muitas outras ferramentas GNU. Você pode fazer isso com cygwin , mas eu pessoalmente prefiro GnuWin32 porque é uma experiência de instalação muito mais leve.

Então, a minha resposta é que o equivalente Windows de diff, não é outro senão diff ele mesmo!
 25
Author: David Heffernan, 2011-07-29 18:23:12

O Winmerge tem um utilitárioque pode valer a pena verificar.

Além disso, você pode usar a parte gráfica dele também dependendo do que você precisa.

 20
Author: Robert Greiner, 2011-07-29 18:14:22

Outra alternativa é baixar e instalar o git de aqui. Em seguida, adicione o caminho para Git\bin\ a sua variável PATH. Isso lhe dará não só diff, mas também muitos outros comandos linux que você pode usar a partir da linha de comandos windows.

Poderá definir a variável PATH Se carregar com o botão direito no computador e seleccionar as propriedades. Em seguida, você pode clicar em Configurações Avançadas do sistema no lado esquerdo da tela. No pop up, clique em Variáveis de ambiente e, em seguida, adicionar ou actualizar a variável de localização nas suas variáveis de utilizador com Git\bin\

Documentação do git diff

 14
Author: Tim Hutchison, 2018-05-29 17:30:01

Fc. fc é melhor no tratamento de arquivos grandes (>4 GBytes) do que o diff de Cygwin.

 8
Author: nerdfever.com, 2012-09-26 19:01:05

FC funciona muito bem no meu caso não foi útil, pois eu queria apenas as linhas que são mudadas. E FC dar dados adicionais como nome de Arquivo, as mesmas linhas e comparação bilateral.

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

Mas no meu caso eu queria apenas as linhas que mudaram e queria que essas linhas fossem exportadas para arquivos diferentes, sem qualquer outro cabeçalho ou dados.

Então eu usei "findstr" para comparar o ficheiro:

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

Em que:

data.txt.bak é o nome do ficheiro antigo

data.txt é o nome do novo ficheiro

DiffResult.txt contém os dados que são alterados, ou seja, apenas uma linha ####09

 8
Author: Nimish Choudhary, 2015-06-01 19:51:42

Também há Powershell (que faz parte das janelas). Não é rápido, mas é flexível, aqui está o comando básico. As pessoas escreveram vários cmdlets e scripts para ele se você precisar de melhor formatação.

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

Não faz parte do Windows, mas se você é um desenvolvedor com Visual Studio, ele vem com WinDiff (gráfico)

Mas o meu favorito é BeyondCompare, que custa 30 dólares.
 7
Author: Paul Williams, 2014-04-18 02:21:13

DiffUtils é provavelmente a tua melhor aposta. É o equivalente a janelas de diferenças.

Tanto quanto sei, não há equivalentes incorporados.
 4
Author: mattkelly, 2011-07-29 18:18:33

A razão pela qual você obtém o erro com COMP é que o utilitário assume que os arquivos que você está comparando são do mesmo tamanho. Para ultrapassar isso, poderá usar a opção th '/n' com a qual poderá indicar o número de linhas que deseja comparar. (veja as opções suportadas pelo comp escrevendo 'comp /?' na linha de comandos. então o seu comando pareceria:

C:\>comp "filepath1" "filepath2" /a /l /n=(the number of lines you want to compare) /c 
Isto deve resolver o teu problema se quiseres continuar a usar o COMP. Mas isso será um problema para realmente grande arquivo.

Embora comp seja uma opção, mas eu sinto que é primitiva e FC é uma opção melhor. você pode usar FORFILES e FC juntos para provavelmente fazer um utilitário filecompare realmente bom se você precisar de um em uma base freqüente.

FC é utilizado desta forma para ref:

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

Existem muitas opções disponíveis que você pode ver por 'fc /?' espero que isto ajude.

 2
Author: proximace, 2015-01-30 06:04:48

Encontrei um software gráfico leve para o windows que parece ser útil na falta do comando {[[0]}. Pode resolver todos os meus problemas.

WinDiff http://www.grigsoft.com/download-windiff.htm

 2
Author: Ahmad, 2016-12-27 20:51:03

As janelas equivalentes ao comando diff são o comando fc (ficheiro Comapre).

Aqui estão os passos básicos para o fazer:
1. Mantenha os dois arquivos em uma pasta (exemplo file1.html e Ficheiro 2.html)
2. Iniciar a linha de comandos
3. Tipo fc file1Location file2Location

Encontrei um tutorial detalhado sobre o mesmo:

Http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/

 0
Author: Vishal Kotak, 2015-08-16 14:41:32
Não sei se a seguinte ferramenta é o que precisas. Mas eu gosto de usar, para arquivos específicos, alguma ferramenta online. Assim posso usá-lo independentemente do sistema operacional. Aqui está um exemplo: diffchecker.com

Mas para as minhas necessidades, acho que a melhor ferramenta para acompanhar as alterações e registos dos ficheiros do meu projecto é o GIT. Se você trabalha em uma equipe, você pode ter algum repo online em um servidor Seu, ou usá-lo com Bitbucket ou Github.

Espero que ajude alguém.
 0
Author: Pedro Acácio, 2016-05-31 17:51:28

Se instalou o git na sua máquina, pode abrir um terminal git e usar o comando Linux diff como normal.

 0
Author: falsePockets, 2017-11-20 07:48:36