Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

[已解决] rm不是内部命令或可执行文件或批处理文件什么的,何解?

[复制链接]
 楼主| 发表于 2014-9-21 15:35:56 | 显示全部楼层
vivienluo 发表于 2014-9-21 15:32
这个你就自己多研究研究了。结合参考以下函数。。。
http://www.allegro-skill.com/thread-3588-1-1. ...

好吧,我先自己 折腾折腾,弄不出来再求救
发表于 2014-9-22 10:35:03 | 显示全部楼层
這侽孓譙悴丶 发表于 2014-9-21 14:05
版主,找不到你说的deleteFile这个函数啊··,能否提供个简单的例子参考下···谢谢啦~
  1. ;讀取目前工作目錄下的檔案為1.txt 和 2.art 並刪除這兩個檔案
  2. lDeleteFile = nil
  3. foreach(tFile setof(x getDirFiles(getWorkingDir()) (cadr(parseString(x ".")) == "txt" || cadr(parseString(x ".")) == "art"))
  4.         when(car(parseString(tFile ".")) == "1"
  5.                 lDeleteFile = cons(tFile lDeleteFile)
  6.         )
  7.         when(car(parseString(tFile ".")) == "2"
  8.                 lDeleteFile = cons(tFile lDeleteFile)
  9.         )
  10.         when(lDeleteFile
  11.                 foreach(tFile lDeleteFile
  12.                         tFileName = strcat(getWorkingDir() "/" tFile)
  13.                         when(isFile(tFileName)
  14.                                 deleteFile(tFileName)
  15.                         )
  16.                 )
  17.         )
  18. )
复制代码

评分

参与人数 1SKILL币 +10 贡献 +1 收起 理由
這侽孓譙悴丶 + 10 + 1 感谢热心回答!

查看全部评分

 楼主| 发表于 2014-9-22 20:58:54 | 显示全部楼层
本帖最后由 這侽孓譙悴丶 于 2014-9-22 21:00 编辑

非常感谢,试过可以了,但如果我想删除当前目录下后缀为.txt或后缀为.art的文件使用通配符*为什么不起作用呢?代码如下:lDeleteFile = nil
foreach(tFile setof(x getDirFiles(getWorkingDir()) (cadr(parseString(x ".")) == "txt" || cadr(parseString(x ".")) == "art"))
        when(car(parseString(tFile ".")) == "*"
                lDeleteFile = cons(tFile lDeleteFile)
        )
        when(car(parseString(tFile ".")) == "*"
                lDeleteFile = cons(tFile lDeleteFile)
        )
        when(lDeleteFile
                foreach(tFile lDeleteFile
                        tFileName = strcat(getWorkingDir() "/" tFile)
                        when(isFile(tFileName)
                                deleteFile(tFileName)
                        )
                )
        )
)


发表于 2014-9-23 07:41:45 | 显示全部楼层
本帖最后由 XYX365 于 2014-9-23 07:43 编辑
這侽孓譙悴丶 发表于 2014-9-22 20:58
非常感谢,试过可以了,但如果我想删除当前目录下后缀为.txt或后缀为.art的文件使用通配符*为什么不起作 ...

lDeleteFile = nil
foreach(tFile setof(x getDirFiles(getWorkingDir()) (cadr(parseString(x ".")) == "txt" || cadr(parseString(x ".")) == "art"))
         lDeleteFile = cons(tFile lDeleteFile) ;刪除*.txt 和 *.art
)
when(lDeleteFile
         foreach(tFile lDeleteFile
                   tFileName = strcat(getWorkingDir() "/" tFile)
                   when(isFile(tFileName)
                            deleteFile(tFileName)
                   )
         )
)


发表于 2014-9-23 11:19:02 | 显示全部楼层
本帖最后由 XYX365 于 2014-9-23 11:21 编辑

我已寫好一個skill,如下供參考
  1. axlCmdRegister( "cam clear" 'fnCamClear)
  2. procedure(fnCamClear()
  3.     let((lDeleteFile tFile x tFileName)
  4.             ;讀取目前工作目錄下的檔案為下列的檔案並刪除
  5.             ;*.*,*  *.log  *.val *.tag *.tap *.art *.jrl *.out *.afa art_aper.txt art_param.txt nc_param.txt
  6.             lDeleteFile = nil ;存放要刪除的檔案名稱
  7.             foreach(tFile setof(x getDirFiles(getWorkingDir()) fnCheckFile(x))
  8.                     lDeleteFile = cons(tFile lDeleteFile)
  9.             )
  10.             when(lDeleteFile
  11.                     foreach(tFile lDeleteFile
  12.                             tFileName = strcat(getWorkingDir() "/" tFile)
  13.                             when(isFile(tFileName) && isReadable(tFileName)
  14.                                     deleteFile(tFileName)
  15.                             )
  16.                     )
  17.             )
  18.             ;printf("\n###On current directory *,* *,log  *.val *.tag *.tap *.art *.jrl \n")
  19.             ;printf("###nc_param.txt art_param.txt art_aper.txt *.out *.afa\n###CLEAR is finished ====\n")
  20.     )
  21. )

  22. ;此函數的功能是判斷檔案tFileName是否為下列 ,如果是就傳回 t 否則傳回 nil
  23. ;*.*,*  *.log  *.val *.tag *.tap *.art *.jrl *.out *.afa art_aper.txt art_param.txt nc_param.txt
  24. procedure(fnCheckFile(tFileName)
  25.     prog((lCheckSuffix lCheckFile lString tSuffix lResult x)
  26.                
  27.             lCheckSuffix = list("afa" "art" "jrl" "log" "out" "tag" "tap" "val" "txt")
  28.             lCheckFile = list("art_aper.txt" "art_param.txt" "nc_param.txt")
  29.                
  30.             if(stringp(tFileName) then
  31.                     tFileName = lowerCase(tFileName)
  32.                     ;判斷檔案名稱只要有 , 就傳回 t
  33.                     when(rexMatchp("," tFileName)
  34.                             return(t)
  35.                     )
  36.                     when(tFileName == "allegro.jrl" ;此檔案在Allegro執行中是不能刪除的,
  37.                             return(nil)
  38.                     )
  39.                     lString = parseString(tFileName ".")
  40.                     if(lString then
  41.                             tSuffix = cadr(lString)
  42.                             lResult = setof(x lCheckSuffix (x == tSuffix)) ;過濾後綴名稱有一樣
  43.                             if(lResult then
  44.                                     when(car(lResult) == "txt"
  45.                                             lResult = setof(x lCheckFile (x == tFileName)) ;過濾檔案名稱有一樣
  46.                                     )
  47.                                     if(lResult then
  48.                                             return(t)
  49.                                     else
  50.                                             return(nil)
  51.                                     )
  52.                             else
  53.                                     return(nil)
  54.                             )
  55.                     else
  56.                             return(nil)
  57.                     )
  58.             else
  59.                     return(nil)
  60.             )
  61.     )
  62. )
复制代码

评分

参与人数 1威望 +4 SKILL币 +4 贡献 +2 收起 理由
vivienluo + 4 + 4 + 2 赞一个!

查看全部评分

 楼主| 发表于 2014-9-24 00:20:42 | 显示全部楼层
XYX365 发表于 2014-9-23 11:19
我已寫好一個skill,如下供參考

Allegro有时候会产生一个*.run的文件夹,要加入删除这个文件夹得怎么修改,还要我想加多删除一个*_xy.txt的文件改如何加,我试过几次都没成功。太菜了我,刚学习编写SKILL
发表于 2014-9-24 08:25:10 | 显示全部楼层
這侽孓譙悴丶 发表于 2014-9-24 00:20
Allegro有时候会产生一个*.run的文件夹,要加入删除这个文件夹得怎么修改,还要我想加多删除一个*_xy.txt ...

如下代碼供參考
  1. axlCmdRegister( "cam clear" 'fnCamClear)
  2. procedure(fnCamClear()
  3.         let((lDeleteFile tFile x tFileName)
  4.                 ;讀取目前工作目錄下的檔案為下列的檔案並刪除
  5.                 ;*.*,*  *.log  *.val *.tag *.tap *.art *.jrl *.out *.afa art_aper.txt art_param.txt nc_param.txt
  6.                 ;增加刪除目錄*.run 和檔案 *_xy.txt
  7.                 lDeleteFile = nil ;存放要刪除的檔案名稱
  8.                 foreach(tFile setof(x getDirFiles(getWorkingDir()) fnCheckFile(x))
  9.                         lDeleteFile = cons(tFile lDeleteFile)
  10.                 )
  11.                 when(lDeleteFile
  12.                         foreach(tFile lDeleteFile
  13.                                 tFileName = strcat(getWorkingDir() "/" tFile)
  14.                                 when(isFile(tFileName) && isReadable(tFileName)
  15.                                         deleteFile(tFileName)
  16.                                 )
  17.                         )
  18.                 )
  19.                 ;printf("\n###On current directory *,* *,log  *.val *.tag *.tap *.art *.jrl \n")
  20.                 ;printf("###nc_param.txt art_param.txt art_aper.txt *.out *.afa\n###CLEAR is finished ====\n")
  21.         )
  22. )

  23. ;此函數的功能是判斷檔案tFileName是否為下列 ,如果是就傳回 t 否則傳回 nil
  24. ;*.*,*  *.log  *.val *.tag *.tap *.art *.jrl *.out *.afa art_aper.txt art_param.txt nc_param.txt
  25. procedure(fnCheckFile(tFileName)
  26.         prog((lCheckSuffix lCheckFile lString tSuffix lResult x)
  27.                
  28.                 lCheckSuffix = list("afa" "art" "jrl" "log" "out" "tag" "tap" "val" "txt" "run")
  29.                 lCheckFile = list("art_aper.txt" "art_param.txt" "nc_param.txt")
  30.                
  31.                 if(stringp(tFileName) then
  32.                         tFileName = lowerCase(tFileName)
  33.                         ;判斷檔案名稱只要有 , 就傳回 t
  34.                         when(rexMatchp("," tFileName)
  35.                                 return(t)
  36.                         )
  37.                         when(tFileName == "allegro.jrl" ;此檔案在Allegro執行中是不能刪除的,
  38.                                 return(nil)
  39.                         )
  40.                         lString = parseString(tFileName ".")
  41.                         if(lString then
  42.                                 tSuffix = cadr(lString)
  43.                                 lResult = setof(x lCheckSuffix (x == tSuffix)) ;過濾後綴名稱有一樣
  44.                                 if(lResult then
  45.                                         ;加入判斷後綴名稱為 run ,這裡只有判斷一層子目錄而已.
  46.                                         when(car(lResult) == "run"
  47.                                                 ;判斷是否為目錄
  48.                                                 when(isDir(tFileName)
  49.                                                         ;先取的目錄下所有的檔案和目錄,並先直接刪除後,在刪除此目錄
  50.                                                         bDelDirMaster = t
  51.                                                         foreach(tOne setof(x getDirFiles(tFileName) !((x == ".") || (x == ".."))) ;tOne = nth(0 setof(x getDirFiles(tFileName) !((x == ".") || (x == ".."))))
  52.                                                                 tTemp = strcat(getWorkingDir() "/" tFileName "/" tOne)
  53.                                                                 if(isDir(tTemp) then ;在判斷子目錄,並在取的目錄下所有的檔案和目錄,並先直接刪除
  54.                                                                         bDeleteDir = t
  55.                                                                         foreach(tSubOne setof(x getDirFiles(tTemp) !((x == ".") || (x == "..")))
  56.                                                                                 tTempSub = strcat(getWorkingDir() "/" tFileName "/" tOne "/" tSubOne)
  57.                                                                                 if(isDir(tTempSub) then
  58.                                                                                         printf("E-Cannot delete %L\n" tTempSub)
  59.                                                                                         bDeleteDir = nil
  60.                                                                                 else
  61.                                                                                         when(isFile(tTempSub)
  62.                                                                                                 deleteFile(tTempSub)
  63.                                                                                         )
  64.                                                                                 )
  65.                                                                         )
  66.                                                                         when(bDeleteDir
  67.                                                                                 deleteDir(tTemp)
  68.                                                                         )
  69.                                                                 else
  70.                                                                         ;判斷為檔案
  71.                                                                         when(isFile(tTemp)
  72.                                                                                 deleteFile(tTemp)
  73.                                                                         )
  74.                                                                 )
  75.                                                         )
  76.                                                         deleteDir(tFileName)
  77.                                                 )
  78.                                                 return(nil)
  79.                                         )
  80.                                         when(car(lResult) == "txt"
  81.                                                 lResult = setof(x lCheckFile (x == tFileName)) ;過濾檔案名稱有一樣
  82.                                                 unless(lResult
  83.                                                         when(rexMatchp("_xy$" car(lString)) ;判斷檔案名稱為*_xy.txt
  84.                                                                 return(t)
  85.                                                         )
  86.                                                 )
  87.                                         )
  88.                                         if(lResult then
  89.                                                 return(t)
  90.                                         else
  91.                                                 return(nil)
  92.                                         )
  93.                                 else
  94.                                         return(nil)
  95.                                 )
  96.                         else
  97.                                 return(nil)
  98.                         )
  99.                 else
  100.                         return(nil)
  101.                 )
  102.         )
  103. )
复制代码

点评

完美!  发表于 2014-9-24 22:59

评分

参与人数 1SKILL币 +10 贡献 +1 收起 理由
這侽孓譙悴丶 + 10 + 1 很给力!

查看全部评分

 楼主| 发表于 2014-9-24 23:00:38 | 显示全部楼层
XYX365 发表于 2014-9-24 08:25
如下代碼供參考

谢谢楼主的代码。
发表于 2022-8-25 16:46:42 | 显示全部楼层
删除出 gerber文件夹下到文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-4-26 22:00 , Processed in 0.138872 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表