如何检查目录名中是否存在带通配符的目录?

时间:2012-08-13 16:39:23

标签: variables if-statement batch-file filenames directory

我正在尝试创建一个批处理文件,该文件将在处理其余命令之前检查目录是否存在。目录名称将始终相同,但随后会在末尾附加各种数字,有时还会附加字母。我想删除批处理文件末尾的目录,但是使用rmdir的变量而不检查以确保首先存在路径会产生问题(如在另一个目录中被删除)。下面的代码是我一直在使用的代码,但系统说这条路径不存在。

IF EXIST "C:\Today's Unique Folder*\nul" ( GOTO continue ) ELSE ( GOTO end)

此外,我尝试将此路径设置为变量,并将该变量与IF EXIST一起使用,但这也不起作用。我应该尝试除IF EXIST以外的命令吗?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用FOR/D参数来使用通配符搜索文件夹名称。

请注意,如果找到多个与文件夹名称相同的开头部分的文件夹,RESULT将最终成为最后一个文件夹。

SET RESULT=---

FOR /D %%d IN ("C:\Today's Unique Folder*") DO (
  SET RESULT=%%d
)

IF EXIST "%RESULT%" (GOTO WINDIR) ELSE (GOTO NOWINDIR)

:WINDIR
  ECHO Yes
  GOTO END

:NOWINDIR
  ECHO No

:END

答案 1 :(得分:0)

根据MS KBase,你大部分是正确的。我认为你的目录名有问题。以下工作对我使用有效的目录名称,并回显“是”。

尝试不使用目录名称旁边的双引号,因为Windowss在此上下文中不喜欢它们(strangley)

@echo off

IF EXIST C:\Program Files\NUL ( GOTO WINDIR ) ELSE ( GOTO NOWINDIR )

:WINDIR
echo Yes
goto END

:NOWINDIR
echo No

:END

将“C:\ Program Files”更改为不存在的“C:\ Foo”,它将回显“否”

相关问题