【问题标题】:Checking if a folder exists using a .bat file [closed]使用 .bat 文件检查文件夹是否存在 [关闭]
【发布时间】:2014-01-10 00:06:30
【问题描述】:

我希望能够检查某个文件夹 (FolderA) 是否存在,如果存在,则显示一条消息,然后退出批处理文件。

如果 FolderA 不存在,我想检查另一个文件夹 (FolderB) 是否存在。如果 FolderB 不存在,则应显示一条消息并应创建文件夹,如果 FolderB 确实存在,则应显示一条消息,说明。

有人知道我可以简单地在记事本上使用的代码来创建批处理文件以允许我这样做吗?

所有这些都需要在一个.bat 文件中完成。

【问题讨论】:

标签: windows batch-file


【解决方案1】:

对于文件:

if exist yourfilename (
  echo Yes 
) else (
  echo No
)

将 yourfilename 替换为您的文件名。

对于目录:

if exist yourfoldername\ (
  echo Yes 
) else (
  echo No
)

将 yourfoldername 替换为您的文件夹名称。

尾部反斜杠 (\) 似乎足以区分目录和普通文件。

【讨论】:

  • 你回答的第二部分不完整。
  • if exist "c:\folder\nul" echo ok 在 Windows 7 下对我不起作用。起作用的是 if exist "c:\folder\" echo ok。
  • @AlexanderGelbukh - 你是对的,if exist "networkPath\nul" 可以错误地将文件报告为 Windows 网络驱动器上的文件夹。不幸的是,if exist "networkPath\" 遇到了同样的问题。请参阅stackoverflow.com/a/8669636/1012053 的 2015 年 12 月 8 日更新,了解在我的所有测试中都可靠的技术。
  • @AlexanderGelbukh 它可以在没有引号的情况下工作。当然,这会限制您在目录路径中包含空格。
  • 是的,没有引号也可以。但是,即使对于本地驱动器,使用引号也不起作用:if exist c:\Windows\nul echo ok 表示 ok,但 if exist "c:\Windows\nul" echo ok 什么也没说。正如我所说,if exist "c:\Program Files\nul" echo ok 什么也没说,if exist "c:\Program Files\" echo ok 说ok,因此即使对于带有空格的路径也有效。
【解决方案2】:

我认为答案就在这里(可能重复):

How to test if a file is a directory in a batch script?

IF EXIST %VAR%\NUL ECHO It's a directory

将 %VAR% 替换为您的目录。请阅读原始答案,因为其中包含有关在文件夹名称中处理空格的详细信息。

正如 foxidrive 所说,这在 NT 类窗口上可能不可靠。它对我有用,但我知道它有一些限制(您可以在引用的问题中找到)

if exist "c:\folder\" echo folder exists 

对于现代窗户来说应该足够了。

【讨论】:

  • \nul 技术在 NT 类窗口上不可靠。但是在 MSDOS 和 Win9x 中都很好。现代 Windows 中的解决方案就是if exist "c\:folder\" echo folder exists
  • 我认为这在引用的链接中也有说明。
  • 仍然不明白为什么我被否决了(这意味着“没用”)。我添加了对答案涵盖所需场景的问题的参考。
  • 没用可能是因为它不适用于当前机器,并且您之前的回答没有任何区别。有些人仍然会否决您的答案,因为它没有回答所提出的问题。
  • 来自support.microsoft.com/kb/65994 "NUL 总是存在于本地 MS-DOS FAT 驱动器上" - 如E:\NUL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多