(Отредактировано, см. Комментарии. Исходный ответ ниже.)
Следующий скрипт подсчитывает пустые файлы в каталоге, а затем, если число оказывается больше 0
, удаляетпустые файлы.Каталог указывается в качестве параметра пакетного сценария.Например, если вам нужно обработать каталог C:\Users\DS\Downloads
, вызовите скрипт следующим образом (при условии, что script.bat
- это имя файла скрипта):
script.bat C:\Users\DS\Downloads
Это скрипт:
@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%
)
Исходный ответ следующий:
@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.Я бы посоветовал вам сначала запустить этот скрипт, чтобы убедиться, что он работает правильно.После этого вам нужно будет удалить ECHO
перед каждой из двух команд DEL
, чтобы скрипт действительно удалил файлы.