用于删除文件夹中除一些文件和一些扩展名之外的所有文件的Bat文件

时间:2015-06-29 20:42:59

标签: windows batch-file cmd

我需要一个subj的bat文件。 我有以下内容:

for %%v in (*.*) do if not %%v == _clean.bat if not %%v == gc.dll if not %%v == dmc.exe if not %%v == lib.exe if not %%v == libunres.exe if not %%v == link.exe if not %%v == make.exe if not %%v == men.exe if not %%v == sc.exe if not %%v == scppn.exe if not %%v == sc.ini if not %%v == *.cpp if not %%v == *.c del %%v

它几乎没问题 - 它保存带有名称的文件,但它也删除了* .c和* .cpp文件,我不想删除它们。

解决!

@echo off
for %%v in (*.*) do (
if not %%v == _clean.bat if not %%v == gc.dll if not %%v == dmc.exe if not %%v == lib.exe if not %%v == libunres.exe if not %%v == link.exe if not %%v == make.exe if not %%v == men.exe if not %%v == sc.exe if not %%v == scppn.exe if not %%v == sc.ini if not %%~xv == .cpp if not %%~xv == .c del %%v)

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

@echo off
for %%v in (*.*) do (
if not %%v == _clean.bat if not %%v == gc.dll if not %%v == dmc.exe if not %%v == lib.exe if not %%v == libunres.exe if not %%v == link.exe if not %%v == make.exe if not %%v == men.exe if not %%v == sc.exe if not %%v == scppn.exe if not %%v == sc.ini if not %%~xv == .cpp if not %%~xv == .c del %%v)

有关详细信息,请使用help for获取修改器的完整列表 - 有很多内容!

答案 1 :(得分:1)

我认为这种方式更简单,更容易维护:

@echo off
setlocal EnableDelayedExpansion

set "excludeFile= _clean.bat gc.dll dmc.exe lib.exe libunres.exe link.exe make.exe men.exe sc.exe scppn.exe sc.ini "
set "excludeExt= .cpp .c "

for %%v in (*.*) do (
   if "!excludeFile: %%v =!" equ "%excludeFile%" if "!excludeExt: %%~Xv =!" equ "%excludeExt%" del %%v
)

请确保排除列表以空格开头和结尾。