Batch file 删除扩展名为.csv的所有文件(一批除外)

Batch file 删除扩展名为.csv的所有文件(一批除外),batch-file,batch-processing,Batch File,Batch Processing,假设我有两个文件名为: 1. Item-A.csv 2. Item-B.csv 3. Total-AB.csv 4. Pictures.jpeg 我需要删除任何目录中除total-av.csv以外的所有扩展名为.csv的文件。因此,在我所在的任何目录中,生成的剩余文件如下所示: 1. Total-AB.csv 2. Pictures.jpeg 谢谢你的帮助 在.bat文件中尝试以下操作: for /f "usebackq" %%f in (`dir *.csv /s/b ^| f

假设我有两个文件名为:

 1. Item-A.csv
 2. Item-B.csv
 3. Total-AB.csv
 4. Pictures.jpeg
我需要删除任何目录中除total-av.csv以外的所有扩展名为.csv的文件。因此,在我所在的任何目录中,生成的剩余文件如下所示:

 1. Total-AB.csv
 2. Pictures.jpeg

谢谢你的帮助

在.bat文件中尝试以下操作:

for /f "usebackq" %%f in (`dir *.csv /s/b ^| findstr /v /i "Total-AB.csv"`) do (
    echo %%f
    rem del %%f
)

一旦rem看起来像预期的那样工作,就取出它。

下面是一个PowerShell命令,用于删除除total-av.csv之外的所有子文件夹中的每个*.csv

Dir *.csv -Exclude total-av.csv -R | del
下面是不使用批处理短名称的相同命令

Get-ChildItem -Filter *.csv -Exclude total-av.csv -Recurse | Remove-Item

在示例文件夹树上测试这一点。请注意,它在整个文件夹树上是递归的

@echo off
for /r "d:\base\folder" %%a in (*.csv) do if /i not "%%~nxa"=="total-av.csv" del "%%a"

该文件是否始终称为Total-AB.csv,或者名称是否会更改为其他名称?另外,到目前为止您尝试了什么?查找-name'*.csv'-名称“Total-AB.csv”-删除不首先删除运行以检查列表。文件名始终称为Total-AB.csv。我已经试过%%I了。如果不%%i==total-ab.csv del/q%%i,则执行此操作。但它不考虑扩展名,它会删除除具有该名称的文件之外的所有内容。如果不是%~nxi==total-ab.csv,请尝试。n只获取文件名,x获取扩展名。我在上面尝试过,但仍然删除了所有内容,包括.jpeg扩展名。感谢您的建议,它确实找到了扩展名为csv的文件。但是不删除任何内容。是的,REM注释掉该行,这样它就不会运行。如果echo看起来有效,请删除REM命令。除非您使用del%%f,否则它不会处理路径或文件名中的空格和其他一些字符,除非更改findstr命令,否则它还会过滤掉名为My Total-AB.csv等的文件。