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

问题描述

我尝试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