使用.bat文件检查文件夹是否存在

use*_*825 150 windows batch-file

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

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

有没有人对我可以在记事本上使用的代码有任何想法来创建批处理文件以允许我这样做?

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

09s*_*enb 232

尝试将其用于文件:

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)
Run Code Online (Sandbox Code Playgroud)

将文件名替换为文件名.

如需看看这个https://jeffpar.github.io/kbarchive/kb/065/Q65994/

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR
Run Code Online (Sandbox Code Playgroud)

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

  • "如果存在"c:\ folder \nul"echo ok`在Windows 7下对我不起作用.有效的是`if exist"c:\ folder \"echo ok`. (3认同)
  • 你的答案的第二部分是不完整的. (2认同)
  • @AlexanderGelbukh - 你是对的,`if exists "networkPath\nul"` 可以错误地将文件报告为 Windows 网络驱动器上的文件夹。不幸的是,`if exists "networkPath\"` 遇到了同样的问题。请参阅 http://stackoverflow.com/a/8669636/1012053 上的 2015-12-08 更新,了解在我的所有测试中都可靠的技术。 (2认同)
  • 是的,没有引号它有效。但是,带引号它甚至对本地驱动器也不起作用:`如果存在 c:\Windows\nul echo ok` 说`ok`,但是`如果存在 "c:\Windows\nul" echo ok` 什么也没说。正如我所说,虽然`如果存在“c:\ . (2认同)

Cos*_*ană 32

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

如何测试文件是否是批处理脚本中的目录?

IF EXIST %VAR%\NUL ECHO It's a directory
Run Code Online (Sandbox Code Playgroud)

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

正如foxidrive所说,这在NT级窗户上可能并不可靠.它适用于我,但我知道它有一些限制(你可以在引用的问题中找到)

if exist "c:\folder\" echo folder exists 
Run Code Online (Sandbox Code Playgroud)

应该足够现代的窗户.

  • \nul技术在NT类窗口上不可靠.然而,它在MSDOS和Win9x中都很好.现代Windows中的解决方案只是"如果存在"c \:folder \"echo folder exists` (6认同)
  • 来自http://support.microsoft.com/kb/65994"NUL始终存在于本地MS-DOS FAT驱动器上" - 如同`E:\ NUL` (2认同)