用于删除具有特定长度名称的文件的批处理脚本

Batch script to delete files with specific length names

我已经尝试 del "C:\path\?????.txt" 删除名称长度为 5 个字符的文件(abcde.txt 等)。 它会删除名称为 5 个字符的文件,但也会删除名称少于 5 个字符的文件(abc.txt、abcd.txt 等) 任何帮助将不胜感激。

有几种方法可以做到这一点,这是其中之一:

@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b "%userprofile%\Desktop\New\*.txt"') do (
    set "str=%%~i"
    if "!str:~5!" == "%%~xi" del "%%~i" /Q /S
)

以下使用 where.exe 的完整 将仅匹配并随后尝试删除名称恰好包含五个字符和扩展名 .txt 的文件。 (你只需要用一个?来代表每个字符).

@SetLocal
@Set "PATHEXT="
@For /F "EOL=? Delims=" %%G In ('""%__AppDir__%where.exe" "%UserProfile%\Desktop\New":"?????.txt" 2> NUL"') Do @Del /A/F "%%G"
@EndLocal