乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 47|回复: 10

[编程交流] 将文件复制到文件夹

[复制链接]

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:29:35 | 显示全部楼层 |阅读模式
大家好,
 
我先在论坛上搜索了一下,但没有找到任何与我的问题相关的东西。
 
我有一个lisp例程,其中程序的一部分只是从我的计算机中的文件夹中选择一个文件(使用GetField)并读取数据点。
 
我想知道是否有办法选择这个文件并将其复制到另一个文件夹?(有类似复印件的东西吗?)
 
基本上,我想做的是选取原始文件,将其复制到另一个文件夹中,在该文件夹中自动运行另一个程序(Autocad之外),该程序将文件转换为不同的文件类型,然后lisp将读取该特定文件并继续执行lisp例程。
 
我对Autolisp很陌生。希望这有意义。谢谢你的帮助。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 12:36:51 | 显示全部楼层
(vl文件复制源目标)
示例:(vl文件副本(findfile“acad.cui”)“c:\\acad.cui”)
 
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:45:57 | 显示全部楼层
谢谢,我会试试的
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:52:19 | 显示全部楼层
谢谢alanjt,这很有效。
 
有没有办法用与原始文件相同的文件名自动保存复制的文件?
 
我得到的是:
 
 
因此,无论我从对话框中选择的原始文件是什么,它都被保存为“copiedfile.txt”。我想用原始文件名保存复制的文件。假设我从对话框中选择“10455.txt”,我希望复制的文件名相同。原始文件名几乎总是不同的数字。
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 12:56:42 | 显示全部楼层
有人可能会说这是一个小技巧,但它还是有帮助的:
 
  1. (vl-cmdf "shell" (strcat "ren " """ "C:\\file.type" "" "" "newfilename.type" """))

 
“shell”命令的作用类似于Windows命令提示符,在本例中,您将向其发送“rename”函数。您只需要指定文件(具有完整目录)和新文件名。仔细注意重复了几次的“\”序列;这是有原因的。包含目录和文件名的文件必须在引号中,这意味着您需要使用引号的控制代码。
 
您还可以使用“shell”命令创建和修改目录。打开Windows命令提示符并键入“help”以查看可以使用的命令列表。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 13:03:37 | 显示全部楼层
像这样:
  1. (vl-file-copy SourceFile (strcat "c:\" (vl-filename-base SourceFile) (vl-filename-extension SourceFile)))

 
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:06:36 | 显示全部楼层
谢谢大家。
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:12:39 | 显示全部楼层
你好。
 
新问题,相似主题。
 
现在,原始文件被复制到该文件夹中,正如我上面提到的,一个外部程序将其从。txt到a。dtc文件(保持相同的“文件名基”),然后删除。txt文件从文件夹中只留下。dtc。
 
所以我需要我的lisp例程说“等到.txt变成.dtc”(根据文件大小可能从5秒到5分钟不等),从该文件中读取数据,然后运行程序的其余部分。
 
我猜某种while循环应该可以做到这一点,但最好只等待文件出现所需的时间长度,而不是只等待指定的时间长度。
 
有什么办法吗?谢谢
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 13:22:34 | 显示全部楼层
实际上,有。
 
您可以使用(findfile…)搜索您要查找的确切文件然后把它放到一个空的while循环中。它看起来像这样:
 
基本上,循环将无限期地继续,直到找到文件,此时循环将结束,程序的其余部分将运行。
 
不过要小心,因为打破这个循环的唯一方法是让文件出现或点击“escape”退出。
 
我确信这不是最优雅的解决方案,但它可能是最快最简单的。
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:26:58 | 显示全部楼层
谢谢你的免费充值。这实际上是我做不到的“filepath/filename.dtc”位。我实际上不能在代码中指定文件名,因为每次运行程序时文件名都不一样。文件名前缀每次都是不同的数字。
 
所以我需要一些方法来引用“vl filename base”位。所以它应该是这样的:
 
  1. while (not (findfile (strcat ("vl-filename-base' dtmfile) (vl-filename-extension "dtc")))

 
但很明显这行不通,我只是不知道怎么写。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 06:19 , Processed in 0.728804 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表