批量删除文件夹中第n个文件的内容

delete contents of nth file in a folder batch

我有一个程序可以根据文件顺序处理视频文件,例如,它会调用文件夹中的第 45 个或第 10 个文件,但绝不会调用同一个文件两次。现在,为了保存 SSD space 我只想删除第 n 个文件的内容,同时保留文件本身。

批处理文件解决方案没什么意思,因为批处理不能真正计算或处理数组和索引,它需要像这样工作:设置一个计数器,列出文件,对它们进行计数,当计数匹配你想要的数字,做点什么。

@echo off
setlocal enabledelayedexpansion

set i=0

for %%f in (*) do (
  set /A i=!i!+1
  if !i! EQU 45 (
    echo overwriting %%f
    rem echo. > %%f 
  )    
)

rem 使该行成为注释(备注),删除 rem 使其真正覆盖文件。

请注意,这不能很好地处理子目录。