2013-12-13 3 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. У кого-нибудь есть идея?

Если возможно, то, что я хочу, это простой текстовый файл, который позволяет мне добавлять на него имена файлов и позволять ему белить его туда, потому что некоторые из созданных .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 

Это будет печатать имена файлов, как «Вселенная \ 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

Это не удастся, если случай не совпадает. Для сравнения нужен переключатель '/ i'. – foxidrive

Смежные вопросы