2014-06-06 117 views
1

我有一个文件夹(temp文件夹)三种文件删除文件夹中的所有文件,除非列表文件是使用批处理

1.txt 
2.exe 
3.txt 

现在,我将使用批处理写脚本删除该文件夹中的所有文件除了一个文件(3.txt)。如何在脚本中编写它。我尝试使用

del temp /Q 

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

回答

0

您可以使用命令

except 3.txt del temp /Q 

它会删除该文件夹中的所有文件,除了3.txt

+1

哪个版本批次/ Windows命令提示符您使用的是?我从来没有见过“除了”,并且当我尝试这个时,我有一个错误。此外,这个语法对于批处理来说看起来很奇怪... – BuvinJ

+1

我认为你必须在路径上添加这个批处理:http://stackoverflow.com/a/558677/1952213 – Lupocci

1

如果通过目录的内容循环,你可能希望你可以申请任何逻辑,并在这些内容上执行您可能需要的任何操作。例如:

@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