如何检查是否一个目录,目录名通配符存在?

问题描述:

我试图创建一个批处理文件,将处理的命令的休息之前检查目录的存在。该目录名总会启动相同的,但随后各种数字和字母有时被追加到末尾。我想在批处理文件的末尾删除目录,但使用与命令rmdir变量不检查以确保路径存在第一创造问题(如在其他目录中被删除)。下面的代码是什么,我一直在工作着,但系统提示此路径不存在。如何检查是否一个目录,目录名通配符存在?

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

此外,我试图将此路径设置为一个变量,并使用变量与IF EXIST,但也没有工作。除IF EXIST之外是否还有其他命令我应该尝试?预先感谢您的帮助。

+1

星号(*)不是Windows目录或文件名中的有效字符 – Brad 2012-08-13 16:54:49

+0

我意识到这一点。星号的功能是通配符,不是目录名称的一部分。 – user1595923 2012-08-13 17:03:09

您可以使用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 
+0

完美!谢谢! – user1595923 2012-08-13 19:36:03

+1

不客气。我会很感激upvote并选择我的答案为“Accepted”。 – aphoria 2012-08-13 19:38:01

根据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“,它将回显”否“

+0

是的,工作正常,但我正在寻找一个在目录名称中使用通配符的解决方案。目录名称每天都有所不同。 – user1595923 2012-08-13 17:05:26