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

问题描述

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...