(편집, 주석을 참조하십시오. 아래 원래 대답을.) 개수보다 큰 0
를 밝혀지면
다음 스크립트는 다음 디렉토리에 빈 파일을 계산, 빈 파일을 삭제합니다. 디렉토리는 배치 스크립트의 매개 변수로 지정됩니다. 당신이 C:\Users\DS\Downloads
의 디렉토리를 처리해야하는 경우 예를 들어,이 같은 스크립트를 호출 (script.bat
가정하면 스크립트 파일의 이름입니다) :
@ECHO OFF
IF "%~1" == "" (ECHO Usage: %~nx0 path\to\files& GOTO :EOF)
SET "workdir=%~1"
SET count=0
SET "command=SET /A count+=1"
CALL :processempty
ECHO Number of empty files: %count%
IF %count% GTR 0 (
ECHO Deleting files...
SET "command=DEL ^"%%~F^""
CALL :processempty
)
GOTO :EOF
:processempty
FOR %%F IN ("%workdir%\*") DO (
IF "%%~zF" == "0" %command%
)
:
script.bat C:\Users\DS\Downloads
이것은 스크립트입니다 원래 응답은 다음과 같습니다.
@ECHO OFF
SETLOCAL
SET firstfile=
SET delfirstfile=
FOR %%F IN (*) DO (
IF "%%~zF" == "0" (
IF DEFINED firstfile (
ECHO DEL "%%F"
SET delfirstfile=1
) ELSE (
SET "firstfile=%%F"
)
)
)
IF DEFINED delfirstfile ECHO DEL "%firstfile%"
ENDLOCAL
위의 스크립트는 다음과 같이 작동
그것은 현재 디렉토리에있는 모든 파일을 반복하고 자신의 크기를 확인합니다.
첫 번째 빈 파일이 발견되면 해당 이름이 변수에 저장됩니다.
이후의 모든 빈 파일이 삭제되고 다른 변수가 첫 번째 빈 파일도 삭제되어야 함을 나타내도록 설정됩니다.
표시기 변수가 점검 된 후. 설정되어 있으면 첫 번째 빈 파일이 삭제됩니다.
ps. 이 스크립트를 먼저 실행하여 올바르게 작동하는지 확인하는 것이 좋습니다. 그 후에 스크립트가 실제로 파일을 제거하게하려면 두 개의 DEL
명령 앞에 각각 ECHO
을 제거해야합니다.
고맙습니다. 이 프레임 워크에서 작동해야합니다. 디렉토리는 c : \ Users \ DS \ Downloads가되어야합니다. 다음과 같은 if 문이 필요합니다 ..... count> = 1이면 "elseif count = 0"을 삭제 한 다음 아무 것도하지 않습니다. –
@ ME-dia : 처음에는 빈 파일 수만 계산하고 삭제할 것인지 결정하십시오. 아마도 디렉토리를 두 번 반복해야 할 것입니다. 확실합니까? 또한 작업 디렉토리를 어떤 방식으로 설정 하시겠습니까? 예를 들어, 스크립트를 호출하기 직전에'CD로'할 수 있습니까? –
예! 그게 전부 야. 빈 파일 만. CD는 괜찮을거야. 카운트가 1 이상인 경우 작은 C++ 애플릿을 호출합니다. 그렇지 않으면 0이 아니라면 아무 것도 수행하지 않기 때문입니다. 고맙습니다. –