如何从批处理文件中检查文件是否存在

sab*_*sab 444 windows batch-file

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

Chr*_*s J 711

if exist <insert file name here> (
    rem file exists
) else (
    rem file doesn't exist
)
Run Code Online (Sandbox Code Playgroud)

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

if exist <insert file name here> <action>
Run Code Online (Sandbox Code Playgroud)

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

if exist c:\autoexec.bat notepad c:\autoexec.bat
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在处理带空格的路径:http://stackoverflow.com/questions/138981/how-do-i-test-if-a-file-is-a-directory-in-a-batch-script (10认同)
  • @loopkin - `else`有效,请参阅"if /?" ......"ELSE子句必须与IF之后的命令在同一行上.例如:[......众多使用示例...]" (5认同)
  • @ chris-j谢谢Chris,你是对的,似乎括号必须与else在同一行.这就是我做错了.我想我永远不会习惯批处理语法:( (4认同)
  • 如果你是像我这样的n00b并忘记更换波浪形支架,那么这将无效.所以当你{在这里插入文件名}时一定要删除{} !! 花了5分钟尴尬实现这个:( (3认同)
  • "IF EXIST"构造的一个**警告**:它无法检测隐藏文件(具有隐藏属性的文件). (3认同)

She*_* 蒋晟 81

C:\>help if
Run Code Online (Sandbox Code Playgroud)

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

IF [NOT] ERRORLEVEL数字命令

IF [NOT] string1 == string2命令

IF [NOT] EXIST filename命令


RBe*_*eig 35

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

IF EXIST filename. (
    del filename.
) ELSE (
    echo filename. missing.
)

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

这个IF命令非常强大.输出IF /?将奖励仔细阅读.就此而言,尝试使用/?许多其他内置命令的选项来获取大量隐藏的宝石.  

  • 为什么 '.' 文件名末尾?这是一个错字吗? (10认同)
  • 我引用了内置到CMD.EXE的实际`IF`命令的帮助文本,它有这些点.我不知道他们为什么包括它们,它似乎不一致.当然,`EXIST`关键字实际需要的是一个有效的文件名,可以是完全限定的.其他命令使用成语`[drive:] [path] filename`代替文本`filename` use here,这显然更清晰. (7认同)