写一个删除lock文件的skill脚本

电子说

1.3w人已加入

描述

Cadence软件使用过程中偶尔会遇到文件被lock的情况,这是Cadence软件对文件的一种保护措施,大部分情况都是对用户友好的,但是偶尔也会给用户带来困扰,给工作带来的一定的不便。

文件是如何被锁的

Cadence在用户打开文件进行编辑的时候会在文件的同一级目录新建一个lock文件,用来标识文件的状态。

一般情况下如果文件被 正常关闭 ,这个lock文件会在文件关闭或者程序退出的时候自动删除。

Cadence

可是如果编辑过程中 文件被非正常关闭 ,软件来不及删除对应的lock文件就会导致下一次文件无法以编辑模式打开,需要用户去该文件的所在路径删除遗留的lock文件。

Cadence

Using the CLS Administrative Tool

Cadence提供了CLS Administrative Tool给用户使用,通过这个工具,用户可以随时查看或者释放lock文件。

使用CLS Administrative Tool管理lock文件比用户直接去某一目录下操作lock文件要安全并且方便很多,通过CLS Administrative Tool可以轻易完成以下几个工作:

解锁指定的文件(删除指定目录下的lock文件)

查看某一目录及其子目录下所有的lock文件

删除某一目录及其子目录下所有的lock文件

删除所有CLS格式的lock文件,无论该文件在何时、何地创建

CLS Administrative Tool还可以实现其它功能,感兴趣的同学可以自行在Cadence Help中搜索与CLS Administrative Tool相关的内容,进行更深入的学习。

CLS Administrative Tool可以运行在交互式界面或者 命令行模式 ,小目同学觉得它运行在命令行模式更加方便,也与脚本实现更加相近,所以这里只简单介绍一下它运行在命令行模式下的内容。

CLS Administrative Tool运行命令

命令 功能描述
clsAdminTool -ale directoryHierarchy 列出该文件夹及其子文件夹下所有lock文件
clsAdminTool -are directoryHierarchy 删除该文件夹及其子文件夹下所有lock文件
clsAdminTool -asre filePath 删除该文件对应的lock文件

上下、左右滑动可以查看更多内容哦!

直接在终端中输入上面命令,可以运行CLS Administrative Tool并输出相应的结果,下面是输出信息。

Cadence

使用skill脚本运行命令

有了上面的铺垫应该很容易想到,所谓的删除lock文件的脚本最简单、最安全的方法就是编写一个skill脚本,可以按照需要执行上面的命令。恰好,skill脚本提供sh()函数,可以在skill脚本中执行shell命令。

根据需要小目同学编写了一个skill脚本,其中定义了一个函数和一个快捷键,在需要删除lock文件的时候使用相应的快捷键调用一遍函数运行lock文件删除命令即可。

 


1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2;;; start Delete Lock Files  3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 4 5;;; bindkeys 6 7hiSetBindKeys("Layout"  8    list( 9        list("D" "view_delete_lock_file_cb()") 10    ) 11) 12 13hiSetBindKeys("Schematics"  14    list( 15        list("D" "view_delete_lock_file_cb()") 16    ) 17) 18 19procedure( view_delete_lock_file_cb( ) 20    sh(strcat("clsAdminTool -asre " geGetWindowCellView( hiGetCurrentWindow( ) )~>fileName)) 21    printf("Delete lock file for view: %s" geGetWindowCellView( hiGetCurrentWindow( ) )~>cellName ) 22); procedure 23 24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 25;;; end Delete Lock Files 26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

左右滑动可以查看更多内容哦!

  很多时候只删除一个文件的lock文件可能还无法满足需求,将脚本完善,分别为单个文件和库定义删除lock文件的函数。

 

1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2;;; start Delete Lock Files  3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 4 5;;; bindkeys 6 7hiSetBindKeys("Layout"  8    list( 9        list("D" "view_delete_lock_file_cb()") 10        list("ShiftD" "lib_delete_lock_file_cb()") 11    ) 12) 13 14hiSetBindKeys("Schematics"  15    list( 16        list("D" "view_delete_lock_file_cb()") 17        list("ShiftD" "lib_delete_lock_file_cb()") 18    ) 19) 20 21procedure( view_delete_lock_file_cb( ) 22    sh(strcat("clsAdminTool -asre " geGetWindowCellView( hiGetCurrentWindow( ) )~>fileName)) 23    printf("Delete lock file for view: %s" geGetWindowCellView( hiGetCurrentWindow( ) )~>cellName ) 24); procedure 25 26procedure( lib_delete_lock_file_cb( ) 27    sh(strcat("clsAdminTool -are " ddGetObjReadPath(geGetWindowCellView( hiGetCurrentWindow( ) )~>lib))) 28    printf("Delete lock file for library: %s" geGetWindowCellView( hiGetCurrentWindow( ) )~>libName ) 29); procedure 30 31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 32;;; end Delete Lock Files 33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 


左右滑动可以查看更多内容哦!

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分