如果可以重命名文件,如何进行批处理文件测试?

时间:2016-11-24 12:57:45

标签: batch-file

我需要有人帮我制作一个bacth文件,可以测试文件是否可以重命名,然后打开一个信息框,告诉文件是否可以重命名。

所有这一切的问题在于我使用交互式pdf文件,如果我的网络上有两个人同时打开文件,他们都不能保存他们在文件中所做的更改。但我知道如果有人打开文件就无法重命名,这就是为什么我需要一个可以测试文件是否可以重命名而不重命名的批处理文件。如果它可以重命名,我需要它打开一个弹出框,说“文件已准备好进行编辑”,如果无法重命名,我需要弹出框说“文件正在使用中,请稍后再试”< / p>

如果有人愿意承担这个挑战,我会非常高兴的。)

最诚挚的问候 翁

@echo off
ren“file.pdf”“file.pdf”2&gt; nul || (
  echo对不起,该文件正在使用中   echo请稍后再试。
否则启动“C:\ Test”file.pdf

2 个答案:

答案 0 :(得分:4)

你几乎已经回答了自己的问题,却没有意识到: - )

只需尝试将文件重命名为相同名称即可。如果成功,则文件未锁定且没有任何损害。如果失败,则表示文件已被锁定。

例如:

@echo off
ren "yourFile.pdf" "yourFile.pdf" 2>nul || (
  echo Sorry, file is locked by another user
  rem Take some error action, perhaps GOTO or EXIT /B
)
rem Now open the pdf file

但要注意 - 这种策略并非万无一失,因为你有竞争条件。如果两个进程几乎同时针对同一个文件运行,那么它们都可以重命名&#34;该文件在有机会打开文件之前成功。

答案 1 :(得分:0)

试试这段代码:

ren "pdffile.pdf" "renameto.pdf"
if %errorlevel% NEQ 0 (
    echo The file cannot be renamed.
    rem The following line makes a dialog box saying that an error happened:
    echo msgbox "The file could not be renamed.">"%TEMP%\msg.vbs" && cscript /nologo "%TEMP%\msg.vbs" && del "%TEMP%\msg.vbs"
    rem put other commands here
)