如何检查批处理文件中是不是存在文件[重复]

Posted

技术标签:

【中文标题】如何检查批处理文件中是不是存在文件[重复]【英文标题】:How to check if a file exists from inside a batch file [duplicate]如何检查批处理文件中是否存在文件[重复] 【发布时间】:2011-05-19 10:16:33 【问题描述】:

仅当某个文件存在时,我才需要运行实用程序。如何在 Windows 批处理中执行此操作?

【问题讨论】:

【参考方案1】:
C:\>help if

在批处理程序中执行条件处理。

IF [NOT] ERRORLEVEL 编号命令

IF [NOT] string1==string2 命令

IF [NOT] EXIST 文件名命令

【讨论】:

【参考方案2】:

尝试以下示例,引用自 Windows XP 上 IF /? 的输出:

如果存在文件名.txt ( del 文件名.txt ) 别的 ( 回显文件名.txt 丢失。 )

您还可以使用IF NOT EXIST 检查丢失的文件。

IF 命令非常强大。 IF /? 的输出将奖励仔细阅读。就此而言,请尝试在许多其他内置命令上使用 /? 选项,以获得大量隐藏的宝石。

【讨论】:

为什么是 '.'在文件名的末尾?是不是笔误? 我引用了 CMD.EXE 中内置的实际 IF 命令的帮助文本,其中包含这些点。我不知道他们为什么将它们包括在内,它似乎确实不一致。当然,EXIST 关键字实际上需要的是一个有效的文件名,它可能是完全限定的。其他命令使用成语[drive:][path]filename代替文字filename. use here,显然更清晰。【参考方案3】:
if exist <insert file name here> (
    rem file exists
) else (
    rem file doesn't exist
)

或者在单行上(如果只需要执行一个操作):

if exist <insert file name here> <action>

例如,如果文件存在,这会在 autoexec.bat 上打开记事本:

if exist c:\autoexec.bat notepad c:\autoexec.bat

【讨论】:

如果你正在处理带空格的路径:***.com/questions/138981/… @loopkin - else 是有效的,参见“if /?” ... "ELSE 子句必须与 IF 之后的命令出现在同一行。例如:[...numerous examples of use...]" @chris-j 谢谢 Chris,你是对的,看来括号必须与 else 在同一行。那就是我做错了。我想我永远不会习惯批处理语法:( 如果您像我一样是 n00b 并且忘记更换波浪形括号,那么这将不起作用。因此,当您在此处插入文件名时,请务必删除 !花了很尴尬的 5 分钟才意识到这一点:( IF EXIST 构造的一个警告:它无法检测隐藏文件(具有隐藏属性的文件)。

以上是关于如何检查批处理文件中是不是存在文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查文件大小是不是超过批处理的最大文件大小[重复]

如何通过批处理文件命令检查 xml 元素/属性是不是存在

批处理文件以检查文件中是不是存在特定单词“test”,如果存在则将整个文件夹复制到另一个位置

检查文件是不是存在后如何删除

Node.js:在写入之前检查文件是不是存在[重复]

在VC里如何检查一个文件是不是存在