如何检查批处理文件中是不是存在文件[重复]
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 /?
的输出:
您还可以使用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
构造的一个警告:它无法检测隐藏文件(具有隐藏属性的文件)。以上是关于如何检查批处理文件中是不是存在文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章