运行tf history命令后,从文本文件中提取文件名

时间:2012-08-31 12:25:51

标签: string tfs tfs2010 substring

我需要一些帮助。我有一个文本文件,在其中,我有一个TFS命令(tfhistory)的输出:


变更集:74125 用户:JDoe 日期:2012年8月30日星期四下午3:56:06

注释:   任务#12345. JDoe。

产品:

合并,编辑$ /项目名称/ FolderSln / Folder1 / Binary.File1.cs

合并,编辑$ / Project Name / Folder1 / Folder2 / SQL_File2.sql

合并,编辑$ / Project Name / Folder1 / Folder2 / Folder3 / File3.png

登记手续:   代码审核员:   绩效评估员:   安全审核员:


我的目标是过滤文件中的所有垃圾并仅保留文件列表,在上面的示例中,输出将在下面。但是,对于CS文件,我们可以复制dll而不是文件


Folder1.dll

SQL_File2.sql

File3.png


考虑到可能有多个变更集部分包含多个文件且文件路径可能不同,我怎样才能实现这一点?

我原以为可以用GREP或FINDSTR命令隔离这些行来仅提取文件路径,然后创建一个使用数组提取文件名并将它们发布到不同文本文件的小应用程序

$ /项目名称/ Folder1 / Binary.File1.cs

$ /项目名称/ Folder1 / Folder2 / SQL_File2.sql

$ /项目名称/ Folder1 / Folder2 / Folder3 / File3.png

1 个答案:

答案 0 :(得分:1)

假设您的tf历史记录的输出位于文件调用tf.list中,此批处理将产生所需的结果:

for /F "delims=$ tokens=1,*" %%a in (tf.list) do if NOT !%%b!==!! call :line "%%b"

goto :eof

:line
set filename=%~n1%~x1
echo %filename%
goto :eof