KillGod_2021 2023-09-27 18:41 采纳率: 0%
浏览 4

一个文件夹有若干 dxf,要以此替换其中包含的 “1014”字符为本 dxf 文件的文件名,lisp 语言怎么实现。要求正确逐个打开和关闭 dxf 文件

一个文件夹有若干 dxf,要以此替换其中包含的 “1014”字符为本 dxf 文件的文件名,lisp 语言怎么实现。要求正确逐个打开和关闭 dxf 文件,并且不会因为 dxf 文件不同于 dwg 文件的保存特性导致程序失灵。
#dxf的批量打开和关闭
#替换其中某些文字为文件名

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-27 21:52
    关注

    引自免费微信小程序-皆我百晓生,希望对题主有所帮助,如有帮助,还望采纳。


    下面是一个用Lisp语言实现的解决方案:

    (defun replace-1014-with-filename (file)
      (setq file-name (nth 0 (last (split-string file "\\"))))
      (setq output-file (concatenate 'string (subseq file 0 (- (length file) 4)) "_temp.dxf"))
      (setq input-stream (open file :direction :input))
      (setq output-stream (open output-file :direction :output))
      (loop while (not (eq (read-line input-stream) :eof)) do
            (let ((line (read-line input-stream)))
              (setq replaced-line (replace-regexp-in-string "1014" file-name line))
              (write-line replaced-line output-stream)))
      (close input-stream)
      (close output-stream)
      (delete-file file)
      (rename-file output-file file)
      )
      
    (defun batch-process-dxf-files (folder)
      (setq files (directory folder "*.dxf"))
      (dolist (file files)
        (replace-1014-with-filename file))
      )
    

    上述代码定义了两个函数:replace-1014-with-filename用于替换DXF文件中的"1014"字符为文件名,并将结果另存为临时文件,batch-process-dxf-files用于批量处理包含在文件夹中的DXF文件。

    你可以在调用batch-process-dxf-files函数时传递包含DXF文件的文件夹路径作为参数,例如(batch-process-dxf-files "C:/DXF_Files")。

    请注意,该解决方案仅替换文件中的第一个出现的"1014"字符串,并且可能不适用于所有DXF文件。此外,根据DXF文件的具体内容和格式,你可能需要对此代码进行一些自定义。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日