批量获取0字节文件的计数

时间:2011-09-29 00:23:46

标签: windows batch-file

我正在尝试运行批处理以获取目录中的0字节文件数。如果计数是一个或多个,那么我想删除文件,否则退出。这是我到目前为止所拥有的。

@echo off
if "%~z1" == "" (
   echo File does not exist.
) else if "%~z1" == "0" (
   echo File is empty.
) else (
   echo File is non-empty.
)

1 个答案:

答案 0 :(得分:4)

(编辑,见评论。下面的原始答案。)

以下脚本计算目录中的空文件,如果计数结果大于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

上面的脚本是这样的:

  1. 它遍历当前目录中的所有文件并检查其大小。

  2. 找到第一个空文件后,其名称将存储到变量中。

  3. 删除每个后续空文件,并设置另一个变量以指示也应删除第一个空文件。

  4. 循环后,检查指标变量。如果已设置,则删除第一个空文件。

  5. PS。我建议你先按原样运行这个脚本,以确保它正常工作。之后,您需要在两个ECHO命令的前面删除DEL,让脚本实际删除文件。