如何检查是否一个目录,目录名通配符存在?
我试图创建一个批处理文件,将处理的命令的休息之前检查目录的存在。该目录名总会启动相同的,但随后各种数字和字母有时被追加到末尾。我想在批处理文件的末尾删除目录,但使用与命令rmdir变量不检查以确保路径存在第一创造问题(如在其他目录中被删除)。下面的代码是什么,我一直在工作着,但系统提示此路径不存在。如何检查是否一个目录,目录名通配符存在?
IF EXIST "C:\Today's Unique Folder*\nul" (GOTO continue) ELSE (GOTO end)
此外,我试图将此路径设置为一个变量,并使用变量与IF EXIST,但也没有工作。除IF EXIST之外是否还有其他命令我应该尝试?预先感谢您的帮助。
您可以使用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
完美!谢谢! – user1595923 2012-08-13 19:36:03
不客气。我会很感激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“,它将回显”否“
是的,工作正常,但我正在寻找一个在目录名称中使用通配符的解决方案。目录名称每天都有所不同。 – user1595923 2012-08-13 17:05:26
星号(*)不是Windows目录或文件名中的有效字符 – Brad 2012-08-13 16:54:49
我意识到这一点。星号的功能是通配符,不是目录名称的一部分。 – user1595923 2012-08-13 17:03:09