代码之家  ›  专栏  ›  技术社区  ›  hatmatrix

重命名文件出错?

  •  3
  • hatmatrix  · 技术社区  · 15 年前

    (defun compresspdf (filename)
      (interactive)
      (let ((tmpfile (concat filename "~")))
        (start-process-shell-command "pdftk" nil
        (format "pdftk %s cat output %s compress dont_ask"
            filename tmpfile))
        (rename-file tmpfile filename t)))
    

    它压缩文件并以相同的名称保存 ~ let: Renaming: No such file or directory, /pathtofile/mypdf.pdf~, /pathtofile/mypdf.pdf ,但显然,这两个文件都存在。我可以单独评估重命名文件后,它的作品很好。也许是想给 ~ 在实际创建文件之前?在这种情况下,我怎样才能让它等到过程完成?(并可能检查错误?)

    1 回复  |  直到 15 年前
        1
  •  3
  •   Trey Jackson    15 年前

    与使用 'start-process-shell-command ,它只是生成进程,因此重命名发生在 tmpfile 'shell-command ,就像这样:

    (defun compresspdf (filename)
      (interactive)
      (let ((tmpfile (concat filename "~")))
        (with-temp-buffer 
          (shell-command (format "pdftk %s cat output %s compress dont_ask"
                                 filename tmpfile)
                         (current-buffer)
                         (current-buffer)))
        (rename-file tmpfile filename t)))
    

    'shell命令