2014-06-06 115 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