如何在Perforce / P4V中使用010编辑器比较文件

时间:2018-08-20 01:34:04

标签: diff perforce binaryfiles p4v

我正在尝试使用010 Editor v8.0.1作为P4V中二进制文件的差异程序,尤其是那些我具有模板脚本(例如EXE)的文件。

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

我正在使用上面的代码作为参数值的P4V的assign diff applications by file type

问题是,当前后有非空格字符时,P4V不会替换位置参数%1和%2。如果我在P4V之前和之后放置一个空格,将用我想要比较的所需文件愉快地替换它们。但是,010编辑器无法处理此格式。

我该怎么办才能解决Windows系统的这种不兼容性?

1 个答案:

答案 0 :(得分:1)

您可以通过创建一个.bat文件来解决此不兼容问题,该文件以010方式愉快地吞噬P4V提供的参数。将以下脚本保存到名为010EditorP4Diff.bat的文件中,然后使用此bat脚本路径作为“应用程序”路径并将%1 %2作为“自变量”值,将P4V设置为差异所需的文件扩展名。

我还提供了一种基于第一个文件扩展名的快捷方式启动二进制模板的方法。从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