String 运行tf history命令后从文本文件中提取文件名
我需要一些帮助。我有一个文本文件,其中有一个来自TFS命令(tfhistory)的输出:String 运行tf history命令后从文本文件中提取文件名,string,tfs,substring,String,Tfs,Substring,我需要一些帮助。我有一个文本文件,其中有一个来自TFS命令(tfhistory)的输出: 更改集:74125 用户:JDoe 日期:2012年8月30日星期四下午3:56:06 评论: 任务12345。伊多 项目: 合并,编辑$/Project Name/FolderSln/Folder1/Binary.File1.cs 合并,编辑$/Project Name/Folder1/Folder2/SQL\u File2.SQL 合并,编辑$/Project Name/Folder1/Folder2
更改集:74125 用户:JDoe 日期:2012年8月30日星期四下午3:56:06 评论: 任务12345。伊多 项目: 合并,编辑$/Project Name/FolderSln/Folder1/Binary.File1.cs 合并,编辑$/Project Name/Folder1/Folder2/SQL\u File2.SQL 合并,编辑$/Project Name/Folder1/Folder2/Folder3/File3.png 入住注意事项: 代码审阅者: 业绩审查员: 安全审查员:
我的目标是过滤文件中的所有垃圾,只保留文件列表,在上面的示例中,输出如下。但是,对于CS文件,我们可以复制dll而不是文件
Folder1.dll SQL_File2.SQL File3.png
考虑到可能有多个更改集部分包含多个文件,并且文件路径可能不同,如何实现这一点 我认为可以使用GREP或FINDSTR命令隔离行,仅提取文件路径,然后创建一个小型应用程序,使用数组提取文件名并将其发布到不同的文本文件 $/Project Name/Folder1/Binary.File1.cs $/Project Name/Folder1/Folder2/SQL\u File2.SQL
$/Project Name/Folder1/Folder2/Folder3/File3.png假设tf历史记录的输出位于as file call 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