我有一个包含很多类似这样的行的脚本:
ss Get $/%SS_SOURCE_PROJECT%/DLL/Vim25Service2005.dll -I-Y -R -VL%2
ss Get $/%SS_SOURCE_PROJECT%/97AUTO/*.* -I-Y -R -VL%2
我们正在从一种工具迁移到另一种工具(VSS -> TFS),需要移植此脚本。像前者(获取单个文件)这样的行应该转换为:
tf get . Vim25Service2005.dll /all /version:L%2
而后者(递归获取目录)应该转换为:
tf get 97Auto /all /recursive /version:L%2
我可以使用 notepad++ 中的几个智能查找和替换命令(也许使用正则表达式)来自动执行此操作吗?
答案1
对于第一行:
寻找:.*\$.*/([^\*]*) *-I *-Y *-R *-V *(.*)
代替:tf get . $1 /all /version:$2
对于第二行:
寻找:.*\$.*/\*\.\* *-I *-Y *-R *-V *(.*)
.*\$.*/(.*)/\*\.\* *-I *-Y *-R *-V *(.*)
代替:tf get . /all /recursive /version:$1
tf get $1 /all /recursive /version:$2
这些正则表达式解决了参数之间可能缺少空格或空格过多的问题,但它们确实要求参数按照您指定的顺序排列(即 -I、-Y、-R、-V)。如果您的参数并非总是按照该顺序排列,我们将不得不发挥更多的创造力。
如果你需要/想要尝试调整它,我建议使用gskinner 正则表达式工具. 它非常适合快速原型化正则表达式。