Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23754|回复: 20

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

[复制链接]
发表于 2014-9-20 21:15:19 | 显示全部楼层 |阅读模式
使用以下代码自动清除指定后缀的文件,DOS窗口提示rm不是内部命令或可执行文件或批处理文件什么的,何解?

axlCmdRegister( "cam clear" 'camclear  ?cmdType "general")
defun( camclear ()
shell("rm  ./*,*")
shell("rm  ./*.log")
shell("rm ./art_aper.txt")
shell("rm ./art_param.txt")
shell("rm ./nc_param.txt")
shell("rm ./*.val")
shell("rm ./*.tag")
shell("rm ./*.tap")
shell("rm ./*.art")
shell("rm ./*.jrl")
shell("rm ./*.out")
shell("rm ./*.afa")
printf("\n###On current directory *,* *,log  *.val *.tag *.tap *.art *.jrl \n")
printf("###nc_param.txt art_param.txt art_aper.txt *.out *.afa\n###CLEAR is finished ====\n")
);end-defun camclear


发表于 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. )
复制代码

点评

楼主厉害又热心,大赞!!!  发表于 2014-9-24 00:16

评分

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

查看全部评分

发表于 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-21 07:27:04 | 显示全部楼层
改 del 就可以, 因為rm是unix
 楼主| 发表于 2014-9-21 09:00:07 | 显示全部楼层
XYX365 发表于 2014-9-21 07:27
改 del 就可以, 因為rm是unix

把代码中的rm改成 del 吗?
 楼主| 发表于 2014-9-21 09:30:19 | 显示全部楼层
本帖最后由 這侽孓譙悴丶 于 2014-9-21 09:32 编辑
XYX365 发表于 2014-9-21 07:27
改 del 就可以, 因為rm是unix

xlCmdRegister( "cam clear" 'camclear  ?cmdType "general")
defun( camclear ()
shell("del  ./*,*")
shell("del  ./*.log")
shell("del ./art_aper.txt")
shell("del ./art_param.txt")
shell("del ./nc_param.txt")
shell("del ./*.val")
shell("del ./*.tag")
shell("del ./*.tap")
shell("del ./*.art")
shell("del ./*.jrl")
shell("del ./*.out")
shell("del ./*.afa")
printf("\n###On current directory *,* *,log  *.val *.tag *.tap *.art *.jrl \n")
printf("###nc_param.txt art_param.txt art_aper.txt *.out *.afa\n###CLEAR is finished ====\n"));end-defun camclear


改成del也没法删除文件,DOS窗口提示:无效开关-“*”、参数格式不正确-“t_aper.txt”等
发表于 2014-9-21 09:56:10 | 显示全部楼层
楼主为何不用deleteFile函数直接删除文件?
 楼主| 发表于 2014-9-21 09:57:54 | 显示全部楼层
vivienluo 发表于 2014-9-21 09:56
楼主为何不用deleteFile函数直接删除文件?

版主终于出现了,这个函数的格式是?没发现这个
 楼主| 发表于 2014-9-21 14:05:03 | 显示全部楼层
vivienluo 发表于 2014-9-21 09:56
楼主为何不用deleteFile函数直接删除文件?

版主,找不到你说的deleteFile这个函数啊··,能否提供个简单的例子参考下···谢谢啦~
发表于 2014-9-21 15:18:14 | 显示全部楼层
deleteFile("e:/1.txt") 删除文件e:/1.txt。
可结合一下一些函数操作目录:
deleteDir, isFile, isDir
 楼主| 发表于 2014-9-21 15:29:42 | 显示全部楼层
vivienluo 发表于 2014-9-21 15:18
deleteFile("e:/1.txt") 删除文件e:/1.txt。
可结合一下一些函数操作目录:
deleteDir, isFile, isDir

哪个函数可以删除当前目录下制定的文件呢?
发表于 2014-9-21 15:32:31 | 显示全部楼层
這侽孓譙悴丶 发表于 2014-9-21 15:29
哪个函数可以删除当前目录下制定的文件呢?

这个你就自己多研究研究了。结合参考以下函数。。。
http://www.allegro-skill.com/thread-3588-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-26 20:51 , Processed in 0.142677 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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