使用批处理删除列表中文件以外的所有文件

时间:2014-06-06 08:25:10

标签: windows string batch-file

我在文件夹(临时文件夹)中有三个文件

1.txt
2.exe
3.txt

现在我将批量编写脚本来删除文件夹中除一个文件(3.txt)之外的所有文件。如何在脚本中编写它。我尝试使用

del temp /Q

但它会删除我文件夹中的所有文件。我不想删除所有。我只想删除1.txt和2.exe。让我们考虑文件数量很大。

2 个答案:

答案 0 :(得分:2)

如果循环遍历目录的内容,则可以应用您可能需要的任何逻辑,并对这些内容执行您可能需要的任何操作。例如:

@echo off

setlocal enableextensions enabledelayedexpansion

set dirPath=C:\Users\BuvinJ\Desktop\test

pushd !dirPath!

:: Loop through all files in this directory 
for %%a in (*) do (
    set fileName=%%a
    if "!fileName!"=="1.txt" (
        echo FOUND: !fileName!
    ) else (
        echo OTHER: !fileName!
    )
)

:: Loop through all sub directories in this directory
for /d %%a in (*) do (
    set dirName=%%a
    echo Directory: !dirName!
)

popd

您可能还需要逐步浏览内容"即向下钻取嵌套的子目录。为此,在for语句后添加/ r(就像在示例中使用/ d循环遍历目录而不是文件)。

有关此类循环的更多信息,请查看以下内容:http://ss64.com/nt/for2.html

答案 1 :(得分:0)

您可以使用命令

except 3.txt del temp /Q

它将删除除3.txt

以外的文件夹中的所有文件