2013-12-13 38 views
0

因此,我有一個.bat刪除了某個擴展名,但我需要將其中的一些添加到白名單中。我沒有多少運氣。需要將白名單添加到我的.bat中

xcopy "universe" "C:\Users\Administrator\Desktop\Backup\universe - %stamp%" /I 
for %%i in ("universe\*.world") do if not "%%i"=="test.world" if not "%%i"=="test2.world" del /q "%%i" 
exit 

我做了一些虛擬的文件,但即使test.world和test2.world正在用一切。世界刪除。任何人有任何想法?

如果可能的話,我想要的是一個簡單的文本文件,它允許我將文件名添加到它上面,並讓它從那裏加入白名單,因爲一些名稱中產生的.world名稱非常龐大。

回答

1

下面是一個解決方案 - 需要/i來匹配大寫和小寫,%%~nxi匹配文件名和擴展名。

for %%i in ("universe\*.world") do if /i not "%%~nxi"=="test.world" if /i not "%%~nxi"=="test2.world" del /q "%%i" 
+0

這個工作更好,特別是如果我忘記目錄本身。我感謝你們兩位。 – Kaillera

1

當您嘗試調試批處理文件時,ECHO是您的朋友。試試這個:

for %%i in ("universe\*.world") do echo %%i 

這將打印像「universe \ test.world」這樣的文件名,這使問題變得清晰。

您需要在您的測試名稱「宇宙\」,例如:

if not "%%i"=="universe\test.world" 

你可以讓你的代碼更易讀通過在分割它多行:

for %%i in (universe\*.world) do (
    if not "%%i"=="universe\test.world" (
    if not "%%i"=="universe\test2.world" (
    echo %%i 
)) 
) 

請注意,在ECHO之後的行上,需要與IF語句一樣多的右括號。

+0

等嚴重嗎?我實際上必須包括路徑?讓我去試試這個。我已經迴應了。它從來沒有告訴過我,除了xcopy的成功副本之外。 – Kaillera

+0

感謝您的幫助!有效!我被推遲了-.- – Kaillera

+1

如果案件不匹配,這將失敗。它需要if/compare中的'/ i'開關。 – foxidrive

相關問題