2014-03-18 30 views
1

我试图写一个bat文件从一个目录,看起来像“R”串联了一些不确定的长度与.sas7bdat结局删除所有文件。使用通配符德尔法,排除特定文件

例如:r2343.sas7bdat,r2309483.sas7bdat等

的问题是,我也有一个名为 “ranker_interface.sas7bdat” 的文件,所以我不能只是做:

德尔“C:\ TEMP \ R * .sas7bdat”

我试着用搜索引擎这个上下,但我一直没能弄明白。有没有从通配符中排除特定值的方法?

回答

1
for /L %%a in (0,1,9) do ECHO del r%%a*.sas7bdat 

可能是最简单的。

所需DEL命令仅仅是ECHO编用于测试目的。 您已经验证后,该命令是正确的,改变ECHO DELDEL实际删除文件。

如果您直接从提示符而不是批处理文件中的行运行此操作,请将所有%%a更改为%a

+0

感谢这就是我要使用。 – user3430745

0

要列出下来从文件夹中有像“R * .sas7bdat”的所有文件,排除列表称为ranker_interface.sas7bdat的一个,并删除其余可以从批处理文件中使用此命令:

for /f "tokens=*" %%a in ('dir /b r*.sas7bdat ^| find /v "ranker_interface.sas7bdat"') do del /f /q %%a 

它被写入直接从文件夹执行的方式。 这将删除所有“R * .sas7bdat”,但一个由find /v规定 - 排除,可最终再接再find /v排斥,所以像:

for /f "tokens=*" %%a in ('dir /b r*.sas7bdat ^| find /v "ranker_interface.sas7bdat" ^| find /v "rxxxxx.sas7bdat"') do del /f /q %%a 

若您要排除的最佳途径多个文件。如果要排除多个文件,然后你可以把你排除的文件名到直接运行辛格运河文件和isntead del命令进一步for其次if语句可以做到和比较该文件,如果能排除列表中的文件被发现,包含每一行的文件名称。批处理可以是这样的,那么:

@echo off 
    for /f "tokens=*" %%a in ('dir /b r*.sas7bdat') do (
     for /f "tokens=*" %%x in ('type exclusion.txt ^| find /c "%%a"') do (
      if "%%x" EQU "0" (del /f /q %%a) 
     ) 
    ) 

这将删除你的目录是像“R * .sas7bdat”的所有文件,除了那些在文件“exclusion.txt”

希望降低上市这会有所帮助

0

这是解决这个得到的老同学MSDOS方式:

attrib +h "C:\temp\ranker*.sas7bdat" 
del "C:\temp\r*.sas7bdat" 
attrib -h "C:\temp\ranker*.sas7bdat" 

ATTRIB命令隐藏你不想从DEL命令删除的文件,
然后再取消隐藏它们。

+0

谢谢,我试过这个,它工作,但我要使用上面从Magoo的答案。 – user3430745