代码之家  ›  专栏  ›  技术社区  ›  kornman00

如何在perforce/p4v中使用010编辑器比较文件

  •  1
  • kornman00  · 技术社区  · 6 年前

    我试图使用010编辑器V8.0.1作为p4v中二进制文件的diff程序,特别是那些我有模板脚本的文件(例如,exes)。

    根据 -compare documentation 在010的网站上,我想使用的命令行是 -compare:%1::%2::\e\t .

    我在用P4V assign diff applications by file type 使用上述代码作为参数值。

    问题是,p4v会 当位置参数%1和%2前后有非空白字符时,请替换它们。如果我在p4v之前和之后放置一个空格,我会很高兴地用想要区分的文件替换它们。但是,010编辑器不能处理这种格式。

    如何解决Windows系统的这种不兼容?

    1 回复  |  直到 6 年前
        1
  •  1
  •   kornman00    6 年前

    您可以通过创建一个.bat文件来处理这种不兼容,以010会很高兴地吃掉p4v提供的参数。将以下脚本保存到名为 010EditorP4Diff.bat ,然后将p4v设置为使用此bat脚本路径作为“应用程序”路径来区分所需的文件扩展名,并 %1 %2 作为“参数”值。

    我还提供了一种基于第一个文件扩展名快捷启动二进制模板的方法。从最新版本的010编辑器(V8.0.1)开始, -template 参数仅适用于 %2 文件。您需要手动打开模板结果视图( Alt+4 ) 运行所需的模板( F5 ,从列表中选择)作为第一个文件。

    当然,这假设您已经从010编辑器存储库安装了exe.bt模板。

    REM https://www.sweetscape.com/010editor/manual/CommandLine.htm#-compare
    echo off
    set arg1=%1
    set arg1_extension=%~x1
    set arg2=%2
    
    REM Sadly, as of 010 v8.0.1, the template only auto shows up for the arg2 file :[
    if      %arg1_extension% == ".exe"  goto EXE_TEMPLATE
    else if %arg1_extension% == ".dll"  goto EXE_TEMPLATE
    else                                goto NO_TEMPLATE
    
    :EXE_TEMPLATE
    start 010editor -compare:%arg1%::%arg2%::\e\t -   template:"%USERPROFILE%\Documents\SweetScape\010 Templates\Repository\EXE.bt"
    goto GETOUT
    
    :NO_TEMPLATE
    start 010editor -compare:%arg1%::%arg2%::\e\t
    goto GETOUT
    
    :GETOUT