如何列出Plastic SCM代码仓库中所有的xlinks(包含子目录)
问题解决方法
一、正确的逐行读取dirlist.txt的DOS命令
原命令错误原因:你使用的基础for语法默认是遍历括号内的文件对象,而非读取文件内的文本内容,要实现逐行读取文本文件需要使用for /f参数。
分两种使用场景选择对应命令:
- 直接在CMD命令行窗口执行:
for /f "delims=" %i in (dirlist.txt) do cm xlink -s "%i"
参数说明:delims=用于取消默认的空格分隔规则,避免路径中存在空格时被截断,路径外侧添加引号也是为了兼容带空格的路径。
- 写入.bat/.cmd批处理文件执行:
需要将变量前的百分号转义,改为双百分号:
for /f "delims=" %%i in (dirlist.txt) do cm xlink -s "%%i"
二、更快捷的实现方案
无需提前导出目录列表到文件,有两种更高效的方式:
方案1:直接递归遍历本地仓库所有目录
在仓库根目录直接执行以下命令,自动遍历所有子目录检查xlink:
- CMD直接执行:
for /r /d %i in (*) do cm xlink -s "%i"
- 批处理文件执行:
for /r /d %%i in (*) do cm xlink -s "%%i"
参数说明:/r代表递归遍历当前路径下所有层级,/d代表只匹配目录对象,不会处理普通文件。
方案2:使用Plastic SCM原生命令直接查询(最优)
Plastic SCM本身支持直接检索xlink对象,无需自行遍历目录,执行效率更高:
cm find xlink --format={path} {targetrepo} {targetchangeset}
执行后会直接输出当前工作区内所有xlink的本地路径、指向的目标仓库、对应的变更集版本,完全省去目录遍历、逐个判断的步骤。
内容的提问来源于stack exchange,提问作者user1246172
相关产品推荐
相关产品推荐

