2014-08-30 2 views
1

아래 스크립트를 사용하여 "C : \ Storage \ Websites \ Site1"과 같은 웹 사이트에서 "tmp"및 "cache"폴더를 지우고 자합니다."tmp"및 "cache"폴더의 파일 및 하위 폴더 삭제

"C : \ Storage \ Websites \ Site1 \ tmp"및 "C : \ Storage \ Websites \ Site1 \ cache"에있는 파일 및 하위 폴더를 삭제하려고 시도합니다.

어느 것이 맞지만 fx의 파일과 하위 폴더도 삭제하려고합니다. "C : \ Storage \ Websites \ Site1 \ MySpecialLittleProgram \ tmp"및 fx. "C : \ Storage \ Websites \ Site1 \ MySpecialLittleProgram \ cache"를 선택하십시오.

어느 쪽이 맞나요? 웹 사이트의 루트에있는 "tmp"및 "cache"폴더 만 정리하고 다른 하위 폴더에는 정리하지 않아야합니다.

'dir/a : d/b/s tmp 캐시'에서/s 매개 변수를 삭제하면 아무 것도 찾지 못합니다.

누구든지이 부분을 도와 드릴 수 있습니까?

는 (나는 부분과 폴더를 제거 부분을 삭제 파일에/q를 paramenter을 삭제 한 경우 중 하나 개 사본 내 스크립트)

@echo off 

call:CleanUp "C:\Storage\Websites" 

echo.&pause&goto:eof 

::-------------------------------------------------------- 
::-- Function section starts below here 
::-------------------------------------------------------- 

:CleanUp 
    IF EXIST %~1 (
     cd /d %~1 
     FOR /f "tokens=*" %%i in ('dir /a:d /b /s tmp cache') DO (

      echo %%i 

      ::DELETING FILES I FOLDERS AND SUBFOLDERS 
      del %%i /s 

      ::DELETING NOW EMPTY FOLDERS AND SUBFOLDERS 
      FOR /D %%p IN ("%%i\*.*") DO rmdir "%%p" /s 
     ) 
    ) 
goto:eof 

업데이트 :로 내 코드를 업데이트

(를) 지금 노력하고 있습니다 :

@echo off 

call:CleanUp "C:\Storage\Web" 
call:CleanUp "C:\Storage\Web-IIS" 

goto:eof 

::-------------------------------------------------------- 
::-- Function section starts below here 
::-------------------------------------------------------- 

:CleanUp 
IF EXIST %~1 (
    cd /d %~1 

    FOR /f "tokens=*" %%i in ('dir /a:d /b') DO (
     IF EXIST %%i\tmp (   
     del %%i\tmp /s /q 
     FOR /D %%p IN ("%%i\tmp\*.*") DO rmdir "%%p" /s /q 
    ) 

     IF EXIST %%i\cache (   
     del %%i\cache /s /q 
     FOR /D %%p IN ("%%i\cache\*.*") DO rmdir "%%p" /s /q 
    ) 
    ) 
) 
goto:eof 

답변

2

이 그 두 위치에서 파일을 제거해야합니다

다른 것이 필요한 경우 질문을 편집하여 명확하게하십시오. 실행됩니다 콘솔에 명령을 살펴 보는 후 echo 키워드를 제거 : 귀하의 코멘트에서

@echo off 
del "C:\Storage\Websites\Site1\tmp\*.*" /a /s 
del "C:\Storage\Websites\Site1\cache\*.*" /a /s 

, 이것은 당신이해야 할 일을 할 수있다.

@echo off 
cd /d "C:\Storage\Websites" 
for /d %%a in (*) do ( 
    for %%b in (tmp cache) do (
     pushd "%%~fa\%%b" 2>nul && (echo rd /s /q "%%~fa\%%b" 2>nul & popd) 
    ) 
) 
pause 
+0

나는 많은 사이트를 가지고 있으므로 필자가 작성한 스크립트가 필요합니다. 웹 사이트의 루트에서 "tmp"와 "cache"만 삭제하면됩니다. 또한 "(C : \ Storage \ Websites \ Site1 \ SUBFOLDER \ tmp \"또는 "C : \ Storage \ Websites \ Site1 \ SUBFOLDER \ cache \"와 같은 하위 폴더에서 일치하는 폴더를 잘못 삭제합니다. 기존 스크립트를 개선하여 개선 될 수 있습니까? :-) –

+0

많은 사이트 목록과 폴더 위치를 설명하십시오. 문제 해결 방법을 이해하는 데 도움이됩니다. 작동하지 않는 코드를 읽는 것은 거의 유용하지 않습니다. 작동하지 않기 때문입니다. – foxidrive

+0

내 수정 된 답변보기 – foxidrive

0

나는이 작업 rmdir 또는 rd를 사용하는 것이 좋습니다 :

rd "C:\Storage\Websites\Site1\tmp" /S /Q 
md "C:\Storage\Websites\Site1\tmp" 

rd "C:\Storage\Websites\Site1\cache" /S /Q 
md "C:\Storage\Websites\Site1" 

명령 조용한에 대한 모든 하위 디렉토리에 대한 /S/Qtmpcache을 삭제 옵션을 rd, 그러나 그 2 디렉토리를 쉽게 할 수있다 명령 md을 사용하여 다시 만들었지 만, 여기서는 실제로 응용 프로그램이 tmp이고 cache을 만드는 것이 필요하지 않을 것이라고 확신합니다. 그래서 자동으로.

원하지 않는 경우 정리 전과 정리 후 두 디렉토리 중 하나에 파일 및 폴더가있는 디렉토리 목록으로 표시하십시오.

관련 문제