Windows等效于带有ed输出的unix diff命令

时间:2015-05-27 17:19:15

标签: python unix command-line diff windows-7-x64

我尝试递归地比较两个结构相同的目录(解压缩的excel文件中的XML文档),如果有任何文件不同,则使用相应文件中的文本覆盖第一个文件中的文本。第二个目录。在Unix命令行中,您可以使用以下命令轻松输出将对两个文件执行此操作的脚本:

diff -e file1.xml file2.xml > edscript.txt

然后我可以用:

调用脚本
echo "w" >> edscript.txt
ed - file1.txt < edscript.txt

但是,我使用Git Bash Windows 7,并且没有&#34; ed&#34;程序已安装。是否有可以输出脚本并执行的等效项?如果没有,有没有办法在git bash上安装ed?我已经尝试过sudo apt-get install ed但这些命令似乎不太可能。我的最终目标是使用python和子进程库

运行此脚本

欢迎提出任何意见或建议。谢谢!

3 个答案:

答案 0 :(得分:0)

是的,这些工具适用于Windows,请考虑CygwinMSyS

答案 1 :(得分:0)

如果您已经安装了git bash,请检查其bin文件夹。应该有一个你可以直接调用的diff.exe。

对我来说,那是Private Sub DoSomething() On Error GoTo CleanFail '...code... CleanExit: 'cleanup code here Exit Sub CleanFail: If Err.Number = 9 Then 'subscript out of range Err.Clear Resume Next Else MsgBox Err.Description Resume CleanExit End If End Sub

(这可能比尝试在Windows上从python调用类似* nix的shell更容易,然后在该命令行上运行diff)

编辑:从python执行此操作,假设前面提到的diff.exe路径:

C:\Program Files (x86)\Git\bin\diff.exe

答案 2 :(得分:0)

GNU工具http://gnuwin32.sourceforge.net/packages/diffutils.htm

同样来自cmd.exe comp命令,请尝试使用help comp参数。

编辑:你有这个问题的python标签,你有python可用吗?如果是,请查看标准库中的filecmp模块:https://docs.python.org/3/library/filecmp.html

此处的示例:http://pymotw.com/2/filecmp/