2013-12-13 2 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는 친구입니다. 시도해보십시오 :

이렇게하면 "universe \ test.world"와 같은 파일 이름이 인쇄되어 문제가 해결됩니다.

당신은 예를 들어, 당신이 테스트 이름의 "우주 \"를 포함해야합니다

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

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

당신은 여러 줄을 이상 분할하여 코드를 읽기 쉽게 만들 수 있습니다

ECHO 뒤의 행에는 IF 문과 같은 닫는 괄호가 많이 필요합니다.

+0

심각합니까? 실제로 경로를 포함해야합니까? 내가 이걸 시험해 볼게. 나는 이미 에코를 가지고있다. xcopy에서 성공한 복사본 이외의 다른 것을 알려주지 않았습니다. – Kaillera

+0

도움에 감사드립니다! 그것은 효과가있다! 나는 지연됨 .- – Kaillera

+1

대소 문자가 일치하지 않으면 실패합니다. if 비교에서'/ i' 스위치가 필요합니다. – foxidrive