2012-08-13 92 views
2

我試圖創建一個批處理文件,將處理的命令的休息之前檢查目錄的存在。該目錄名總會啓動相同的,但隨後各種數字和字母有時被追加到末尾。我想在批處理文件的末尾刪除目錄,但使用與命令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

回答

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 
+0

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

+1

不客氣。我會很感激upvote並選擇我的答案爲「Accepted」。 – aphoria 2012-08-13 19:38:01

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「,它將回顯」否「

+0

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

相關問題