일괄 처리 연습(2015-6-29 업데이트)

1, 현재 디렉토리 및 하위 디렉토리의 디스크 사용량 인쇄
코드는 다음과 같습니다.
@echo off
echo          ……
echo ========================
dir|findstr /i "file(" > 1.txt
for /f "delims=) tokens=2" %%i in (1.txt) do echo        :%%i
echo ========================
dir /ad /b > 2.txt
for /f "delims=]" %%a in (2.txt) do (dir "%%a"|findstr /i "file(" >> 3.txt && for /f "delims=) tokens=2" %%k in (3.txt) do echo    %%a     :%%k && del /q 3.txt)
del /q 1.txt 2.txt
echo ========================
pause

위에서 직접 쓴 것이라 번거로울 뿐만 아니라 현재 디렉터리와 다음 디렉터리의 디스크만 볼 수 있어 더 깊은 디렉터리에 도움이 되지 않는다.그리고 개인적으로는 뚱뚱해지기 쉬우니 더 편리한 방법이 있을 것 같다.
2, 현재 디렉터리 및 하위 디렉터리의 디스크 점용 인쇄(코드 1 - 개선)
코드는 다음과 같습니다.
@echo off
echo             ……
echo ===========================
for /f "tokens=3,4" %%i in ('dir ^| findstr /i    ') do echo         :%%i%%j
echo ===========================
for /f "delims=]" %%k in ('dir /ad /b') do (
for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i    ') do echo    %%k    :%%l%%m
)
pause

for/f 문장의command에서 파이프 기호를 사용할 수 있도록 ^| 명령을 사용합니다.그게 중요해.
2, 현재 디렉터리와 하위 디렉터리의 디스크 점용을 인쇄합니다(코드 1-개선 2)
코드는 다음과 같습니다.
@echo off
echo             ……
echo ===========================
for /f "tokens=3,4" %%i in ('dir ^| findstr /i    ') do echo         :%%i%%j
echo ===========================
for /f "delims=" %%k in ('dir /ad /b') do (
for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i    ') do echo    %%k    :%%l%%m
)
pause

확장 연습
1, 현재 디렉토리와 모든 하위 디렉토리의 디스크 사용량을 표시합니다.
@echo off
echo             ……
echo ===========================
for /f "tokens=3,4" %%i in ('dir ^| findstr /i    ') do echo         :%%i%%j
echo ===========================
for /f "delims=]" %%k in ('dir /ad /b /s') do (
for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i    ') do echo    %%k    :%%l%%m
)
pause

실력 비교 2,dir 명령에만/s 스위치가 많이 나왔는데 디렉터리에 있는 모든 하위 디렉터리를 뜻합니다.
2, 현재 나무와 모든 하위 디렉터리에서 디스크가 100M 이상 차지하는 파일을 표시합니다
@echo off
echo             ……
echo ===========================
for /f "tokens=3,4" %%i in ('dir ^| findstr /i "File(    "') do echo     %~dp0     :%%i%%j
echo ===========================
for /f "delims=" %%k in ('dir /ad /b /s') do (
for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i "file    "') do (
set xy=%%l
if "!xy:,=" gtr "1024000" echo       100M    :%%k,   %%l%%m
)
)
pause

조건 판단을 위해 if문을 추가하고 100M 이상의 폴더만 출력합니다.
3, 현재 디렉터리와 하위 디렉터리의 빈 폴더를 삭제합니다
방법1
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b /ad') do (
dir /b "%%~i" | findstr ".">nul || rd  /s /q "%%~i"
)

dir/b "%%~i"| findstr "."디렉터리에 파일이 있는지 판단합니다. 파일이 없으면 빈 폴더로 판정하고 rd/s/q '%%%~i' 를 삭제합니다. 주로 삭제는/s를 더해서 하위 디렉터리와 함께 삭제합니다.
방법2
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /ad /b') do (
	for /f "tokens=3" %%j in ('dir "%%i" ^|findstr /i file') do (
		set xj=%%j
		if "!xj:,=!" equ "0" rd /s /q "%%i"
		)
	)

폴더의 디스크 점용을 읽고if문장을 통해 디스크 점용이 0인지 확인하고 0이면 삭제 동작을 실행합니다.

좋은 웹페이지 즐겨찾기